【问题标题】:Kivy with Menubar带有菜单栏的 Kivy
【发布时间】:2017-06-27 14:00:08
【问题描述】:

我想创建一个带有始终相同菜单栏的 Kivy-App。

我的代码:

demo.py

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.boxlayout import BoxLayout

class Display(BoxLayout):
    pass

class Screen_One(Screen):
    pass

class Screen_Two(Screen):
    pass

class DemoApp(App):
    def build(self):
        return Display()

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

demo.kv

<Display>:
    BoxLayout:
        orientation: "vertical"

        BoxLayout:
            size_hint: 1, None
            height: '48dp'
            Button:
                text: 'One'
                on_release: sm.current = 'Screen_One'
            Button:
                text: 'Two'
                on_release: sm.current = 'Screen_Two'

        ScreenManager:
            id: sm
            Screen_One:
            Screen_Two:

<Screen_One>:
    Button:
        text: 'One'

<Screen_Two>:
    Button:
        text: 'Two'

但它不起作用,如果我点击我收到的“一个”:

kivy.uix.screenmanager.ScreenManagerException: 没有名称为“Screen_One”的屏幕。

我将我的代码简化为前导部分。我还尝试将 menu-kivy-code 放在单独的文件中并导入,但是我也无法访问 ScreenManager 并且无法切换屏幕。

【问题讨论】:

    标签: python kivy


    【解决方案1】:

    ScreenManager.current 属性是当前显示的屏幕的名称。您尚未在类(屏幕)中设置名称属性。你的demo.kv 文件应该是:

    <Display>:
        BoxLayout:
            orientation: "vertical"
    
            BoxLayout:
                size_hint: 1, None
                height: '48dp'
                Button:
                    text: 'One'
                    on_release: sm.current = 'screen_one'  #<<<<<<<<<<<<<<<<
                Button:
                    text: 'Two'
                    on_release: sm.current = 'screen_two'  #<<<<<<<<<<<<<<<<
    
            ScreenManager:
                id: sm
                Screen_One:
                Screen_Two:
    
    <Screen_One>:
        name: 'screen_one'      #<<<<<<<<<<<<<<<<
        Button:
            text: 'One'
    
    <Screen_Two>:
        name: 'screen_two'      #<<<<<<<<<<<<<<<<
        Button:
            text: 'Two'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      • 2012-08-09
      • 2013-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多