如何在另一个 python 文件中导入屏幕类?

Posted

技术标签:

【中文标题】如何在另一个 python 文件中导入屏幕类?【英文标题】:How to import a screen class in another python file? 【发布时间】: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'

如何解决?

【问题讨论】:

【参考方案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)

以上是关于如何在另一个 python 文件中导入屏幕类?的主要内容,如果未能解决你的问题,请参考以下文章

Python 在另一个文件中导入模块

如何通过 Boost.Python 从 python 文件中导入函数

Prefix Header 在另一个项目中导入

在另一个应用模型中导入应用模型类

在swift中导入swift链接的objc类

如何从仅影响一个类的内置函数中导入对象?