如果我是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导入类。虽然这种方法没有经过测试,但值得一试。