我曾经设法让一个多屏幕程序在一个.kv文件中定义所有内容(包括屏幕)来工作。
通过使用
root.current
(在.kv文件中)或
self.root.current
(在python文件中)我能够在屏幕之间切换。但是,一旦有多个带有许多小部件的屏幕,.kv文件就会变得非常大并且很难维护。
这次我试图在单独的.kv文件中定义屏幕,但是我不能在屏幕之间切换来工作迄今为止的每次尝试都会导致错误(无效语法、未定义屏幕名称…)。
是否有一种(或多种)在单独的.kv文件中定义的屏幕之间切换的方法?
以下是我正在使用的文件:
主.py
from kivy.app import App
class MainApp(App):
pass
if __name__ == '__main__':
MainApp().run()
主电压:
#:include screen_1.kv
#:include screen_2.kv
#:import NoTransition kivy.uix.screenmanager.NoTransition
ScreenManager:
transition: NoTransition()
Screen:
name: "main_screen"
BoxLayout:
orientation: "vertical"
Label:
text: "main screen"
Button:
text: "to screen 1"
on_press: app.root.current = "screen_1"
Button:
text: "to screen 2"
on_press: app.root.current = "screen_2"
1.kv屏蔽:
Screen:
name: 'screen_1'
BoxLayout:
orientation: "vertical"
Label:
text: "Screen 1"
Button:
text: "to main screen"
on_press: app.root.current = "main_screen"
Button:
text: "to screen 2"
on_press: app.root.current = "screen_2"
2.KV屏蔽:
Screen:
name: 'screen_2'
BoxLayout:
orientation: "vertical"
Label:
text: "Screen 2"
Button:
text: "to main screen"
on_press: app.root.current = "main_screen"
Button:
text: "to screen 1"
on_press: app.root.current = "screen_1"