简体   繁体   English

具有两个屏幕的简单Kivy代码

[英]Simple Kivy code with two screens

Here is a simple 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()

I need the following: 我需要以下内容:

  • If I click on the "ONE" button (in MenuScreen), should appear the MainScreen with a button that has the text "one" (for example) 如果单击“一个”按钮(在MenuScreen中),则应出现带有带有文本“一个”的按钮的主屏幕(例如)

  • If I click on the "TWO" button (in MenuScreen), should appear the MainScreen with a button that has the text "two" 如果我单击“两个”按钮(在MenuScreen中),则应出现带有带有文本“两个”的按钮的主屏幕

How can I do this? 我怎样才能做到这一点?

PS Sorry for my bad English PS对不起,我的英语不好

Your code is really messy; 您的代码真的很混乱; I've changed it so it is more readable, and split into two files: 我对其进行了更改,以使其更具可读性,并分为两个文件:

test.kv: 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: 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM