[英]Simple Kivy code with two screens
这是带有两个屏幕的简单代码:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
Builder.load_string("""
<MenuScreen>:
BoxLayout:
Button:
text: 'ONE'
on_release: root.manager.current = 'main'
Button:
text: 'TWO'
on_release: root.manager.current = 'main'
<MainScreen>:
Button:
on_release: root.manager.current = 'menu'
""")
class MenuScreen(Screen):
pass
class MainScreen(Screen):
pass
class ScreenManager(ScreenManager):
pass
sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(MainScreen(name='main'))
class TestApp(App):
def build(self):
return sm
if __name__ == '__main__':
TestApp().run()
我需要以下内容:
如果单击“一个”按钮(在MenuScreen中),则应出现带有带有文本“一个”的按钮的主屏幕(例如)
如果我单击“两个”按钮(在MenuScreen中),则应出现带有带有文本“两个”的按钮的主屏幕
我怎样才能做到这一点?
PS对不起,我的英语不好
您的代码真的很混乱; 我对其进行了更改,以使其更具可读性,并分为两个文件:
test.kv:
MyScreenManager:
MenuScreen:
id: menu
MainScreen:
id: main
<MenuScreen>:
name: 'menu'
BoxLayout:
Button:
text: 'ONE'
on_release: root.switch_screen('one')
Button:
text: 'TWO'
on_release: root.switch_screen('two')
<MainScreen>:
name: 'main'
Button:
id: button
on_release: root.manager.current = 'menu'
main.py:
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
objects = {}
class MyScreenManager(ScreenManager):
pass
class MenuScreen(Screen):
def switch_screen(self, text):
objects['manager'].current = 'main'
objects['main_button'].text = text
class MainScreen(Screen):
pass
class TestApp(App):
def build(self):
objects['manager'] = self.root
objects['main_button'] = self.root.ids.main.ids.button
if __name__ == '__main__':
TestApp().run()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.