![](/img/trans.png)
[英]Python/Kivy - How to “connect” a function and a label in kv/py files
[英]Python kivy app with kv and py files for every screen
請解釋我如何在 kivy 上創建應用程序,以便每個屏幕都有單獨的 py 和 kv 文件。 包括從屏幕調用的屏幕。 其實我們需要一個窗體的示例應用:Mainscreen-> 1screen-> 2screen
這是一種方法:
主要.py:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager
class WindowManager(ScreenManager):
pass
class TestApp(App):
def build(self):
return Builder.load_file('main.kv') # this method can be eliminated if `main.kv` is renamed to `test.kv`
if __name__ == '__main__':
TestApp().run()
主.kv:
# import the python files defining the Screens
#: import Screen1 screen1.Screen1
#: import Screen2 screen2.Screen2
# include the kv files for the other Screens
#: include screen1.kv
#: include screen2.kv
WindowManager:
Screen1:
Screen2:
屏幕1.py:
from kivy.uix.screenmanager import Screen
class Screen1(Screen):
pass
screen1.kv:
<Screen1>:
name: 'screen1'
BoxLayout:
Label:
text: 'Screen1'
Button:
text: 'back'
on_release: app.root.current = 'screen2'
屏幕2.py:
from kivy.uix.screenmanager import Screen
class Screen2(Screen):
pass
screen2.kv:
<Screen2>:
name: 'screen2'
BoxLayout:
Label:
text: 'Screen2'
Button:
text: 'back'
on_release: app.root.current = 'screen1'
當然,有不同的方法可以做到這一點。 另一種方法是導入main.py
中的所有py
文件,並在main.py
中為每個kv
文件使用Builder.load_file()
如果您將所有文件(除了 main.py)放在名為subs
的子文件夾中,那么您只需對 main.py 進行更改:
class TestApp(App):
def build(self):
return Builder.load_file('subs/main.kv')
並更改main.kv
:
# import the python files defining the Screens
#: import Screen1 subs.screen1.Screen1
#: import Screen2 subs.screen2.Screen2
# include the kv files for the other Screens
#: include subs/screen1.kv
#: include subs/screen2.kv
WindowManager:
Screen1:
Screen2:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.