【问题标题】:How to import a screen class in another python file?如何在另一个 python 文件中导入屏幕类?
【发布时间】:2020-04-28 20:41:46
【问题描述】:

我正在构建一个 kivy 应用程序,我正在使用 ScreenManager 从一个窗口转到另一个窗口。如果我将屏幕管理器中使用的所有类都放在同一个 python 文件中,则该程序正在运行,如下所示:

sm = ScreenManager()
sm.add_widget(Login(name='login'))
sm.add_widget(Account(name='create_account'))
sm.add_widget(AfterLogin(name='after_login'))

但我希望每个类都有一个单独的 python 文件。如何导入类并使屏幕管理器工作?我试图创建“login_after.py”,现在只有模板:


class AfterLogin(Screen):
    pass

并像这样导入类:

import login_after
sm.add_widget(login_after.AfterLogin(name='after_login'))

但这会触发以下错误:

 AttributeError: module 'login_after' has no attribute 'AfterLogin'

如何解决?

【问题讨论】:

    标签: python kivy screen


    【解决方案1】:

    也许这会起作用?

    from login_after import AfterLogin
    sm.add_widget(AfterLogin(name='after_login'))
    

    【讨论】:

    • 这行得通,但问题是它让我只在使用它的方法中导入 AfterLogin,而不是在顶级 python 文件中。这可以被认为是错误吗?
    • @iulianaiuliana 您必须在将使用它的文件的顶部导入它。它是 Python 的东西;o)
    • @iulianaiuliana 如果您只能在函数/方法中导入,但不能在文件顶部导入,那么这听起来像是循环导入。您是否还导入了login_after 中的主文件?
    • 是的,问题是我正在导入整个 python 文件,而不仅仅是使用的类。在另一个 python 文件中,我也在导入第一个文件。感谢您指出问题!
    • @moro_92 如果你觉得我的回答有帮助,那么你可以考虑accept it,让其他人也看到它.. ;o)
    猜你喜欢
    • 2010-11-09
    • 2021-03-07
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 2021-05-10
    相关资源
    最近更新 更多