在.kv文件中导入的Python类未被识别,并引发错误



如果我是Kivy的新手,问了一个天真的问题,请原谅。

在我的Kivy应用程序中,我导入了一些python类和kv小部件。这些在我的本地运行良好,但当我将应用程序转换为apk并尝试在我的android上打开时会出现错误。这是我打开python应用时的错误

无法从libs.baseclass.main.screen.SplashScreen 导入SplashScreen

如果我将导入语句更改为

#: import SplashScreen libs.baseclass.main_screen

然后我得到低于错误

属性错误:模块"libs.baseclass"没有属性"main_screen"

这是我的main.kv文件

#:kivy 2.1.0
#: import SplashScreen libs.baseclass.main_screen.SplashScreen
#: import LoginScreen libs.baseclass.main_screen.LoginScreen
#: import SignupScreen libs.baseclass.main_screen.SignupScreen
#: import TopicsScreen libs.baseclass.main_screen.TopicsScreen
#: import SubTopicsScreen libs.baseclass.main_screen.SubTopicsScreen
#: include libs/kvs/splash_screen.kv
#: include libs/kvs/login_screen.kv
#: include libs/kvs/signup_screen.kv
#: include libs/kvs/topics_screen.kv
#: include libs/kvs/sub_topics_screen.kv

ScreenManager:
SplashScreen:
LoginScreen:
SignupScreen:
TopicsScreen:
SubTopicsScreen:

我的项目结构如下:

Myapp
- libs
- baseclass
- main_screen.py (this files contains all the classes imported in main.kv file )
- kvs
All the .kv files defining screens are here.
- main.kv
- main.py

你能帮我找出问题吗。

查看您共享的代码,问题似乎来自模块名称,即main_screen。

根据PEP8文件

模块的名称应该是短的、全小写的。如果可以提高可读性,则可以在模块名称中使用下划线。Python包也应该有短的、全小写的名称,尽管不鼓励使用下划线。

尝试从模块名称中删除下划线,类似于mainscreen.py。这可能有效。

其他方法可以是在libs.baseclass中创建init文件,并在该init文件中从main_screen.py导入类。因此,在.kv文件中,您将不得不从没有下划线的libs.baseclass导入类。虽然这种方法没有经过测试,但值得一试。

相关内容

  • 没有找到相关文章

最新更新