我正在尝试制作一个应用。我可以在所有文件都位于同一文件夹中的情况下正常工作,但是它变得非常混乱,我想将文件分成以下结构的单独文件夹:Start
,Prelogin , and
FirebaseLoginScreen`。那我想在基维做些什么吗?
我尝试了#:导入名称xyz作为指针,其中x是文件夹名称,y是kv文件的名称,z是我要导入的kv文件中的类,但是出现了很多奇怪的错误当我尝试这样做时。我几乎已将每个文件夹和所有内容添加到我的PYTHONPATH中,但没有任何效果。
开始包含main.py
和main.kv
,其中main.kv
指向``预登录中的screenmanger
''。 Prelogin包含一些由应用程序的标签和文本组成的文件,然后指向FirebaseLoginScreen中的screenmanger。 FirebaseLoginScreen包含许多用于登录系统的文件。
答案 0 :(得分:1)
是的,我将使用此文件夹结构给您和示例
-Project\ --main.py --main.kv --folder1\ ----window1.py ----window1.kv --folder2\ ----window2.py ----window3.py --folder3\ ----window4.py ----window4.kv
文件夹\ window1.py 将类似于
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang.builder import Builder
from kivy.uix.widget import Widget
kivy.require("1.11.1")
# Builder is neccesary to work with multiple files
Builder.load_file("folder1/window1.kv")
class login(BoxLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
class login_window(App):
def build(self):
return login()
if __name__=="__main__":
aplicacion=login_window()
aplicacion.run()
无需指定folder1 \ window1.kv 。
main.py 就像
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang.builder import Builder
from kivy.uix.widget import Widget
# Import files like
from folder1.window1 import login_window
from folder2.window2 import example2_window
from folder3.window3 import example3_window
class manager(BoxLayout):
# Add screens to main
login_widget=login_window()
example2_widget=example2_window()
example3_widget=example3_window()
def __init__(self, **kwargs):
super().__init__(**kwargs)
# Check kv file to understand these lines
self.ids.screen_login.add_widget(self.login_widget)
self.ids.screen_example2.add_widget(self.example2_widget)
self.ids.screen_example3.add_widget(self.example3_widget)
class main(App):
def build(self):
return manager()
if __name__ == "__main__":
main().run()
main.kv 就像(有ScreenManager!)
#:kivy 1.11.1
<manager>:
id: main_window
ScreenManager:
id: scrn_mngr_main
Screen:
id: screen_login
name:'screen_login'
Screen:
id: screen_example2
name:'screen_example2'
Screen:
id: screen_example3
name:'screen_example3'
现在,要控制程序流程,您需要在 window1.py
中添加这些行 self.parent.current='screen_login'
self.parent.current='screen_example2'
self.parent.current='screen_example3'
改编自Youtube的3个教程的视频
答案 1 :(得分:0)
答案只是“是”,使用kv语言或使用Kivy时的Python中的导入解析没有什么特别之处。如果您遇到问题,那是因为您要尝试的内容是错误的或不足的,这无法从您提供的信息中进行调试。
如果您想跟进它,请发布另一个问题,并给出一个示例,您认为该示例在使用PYTHONPATH操作后应该可以工作。