簡體   English   中英

屏幕文件管理器中的KV文件

[英]Screen Manager in kivy with kv file

這是我要發布的第一個問題,如果問題不完整,我們深感抱歉。

我在kivy的Screen Manager官方頁面上嘗試了該示例,它可以工作,但是如果我嘗試使用kv文件而不是Builder,則會出現黑頁。

測試文件

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen

class MenuScreen(Screen):
    pass

class SettingsScreen(Screen):
    pass

# Create the screen manager
sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(SettingsScreen(name='settings'))

class TestApp(App):

    def build(self):
        return sm

if __name__ == '__main__':
    TestApp().run()

測試文件

<MenuScreen>:
    BoxLayout:
        Button:
            text: 'Goto settings'
            on_press: root.manager.current = 'settings'
        Button:
            text: 'Quit'

<SettingsScreen>:
    BoxLayout:
        Button:
            text: 'My settings button'
        Button:
            text: 'Back to menu'
            on_press: root.manager.current = 'menu'

您的test.py應該如下所示:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen

# Declare both screens
class MenuScreen(Screen):
    pass

class SettingsScreen(Screen):
    pass

class TestApp(App):
    pass

if __name__ == '__main__':
    TestApp().run()

您的test.kv文件應為:

#: kivy 1.10.0

ScreenManager:
    id: screen_manager
    MenuScreen:
        id: menu_screen
        name: 'menu'
        manager: 'screen_manager'
    SettingsScreen:
        id: settings_screen
        name: 'settings'
        manager: 'screen_manager'

<MenuScreen>:
    BoxLayout:
        Button:
            text: 'Goto settings'
            on_press: app.root.current = 'settings'
        Button:
            text: 'Quit'

<SettingsScreen>:
    BoxLayout:
        Button:
            text: 'My settings button'
        Button:
            text: 'Back to menu'
            on_press: app.root.current = 'menu'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM