【问题标题】:When I click on a label, the menu button disappears当我单击标签时,菜单按钮消失
【发布时间】:2017-02-26 23:52:49
【问题描述】:

在下面的代码中,当我单击标签上的菜单按钮时,菜单按钮会从屏幕上消失。我该如何解决这个问题?

我在 Windows 10 上尝试使用 kivy 1.9.2dev。

代码只是创建了一个屏幕管理器,然后添加了两个屏幕。然后添加垂直和水平框布局。

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

Builder.load_string('''
<TheScreenManager>:
    Screen1:

<Screen1>:
    name: 'screen1'
    BoxLayout:
        orientation: 'vertical'
        BoxLayout: # Menu
            size_hint_y: None
            orientation: 'horizontal'
            height: 48

            DropDown1:


        Label: 
            id: label
            text: 'I am a label'
            font_size: 30
            size_hint_y: 0.99


<DropDown1>:
    Button:
        id:btn1
        text: 'btn1'
        on_release: dropdown1.open(self)
        size_hint_y: None
        height: '48dp'

    DropDown:
        id: dropdown1
        on_parent: self.dismiss()
        on_select: btn1.text = '{}'.format(args[1])

        Button:
            text: 'My first Item'
            size_hint_y: None
            height: 44
            on_release: dropdown1.select('item1')


''')


class Screen1(Screen):
    pass


class DropDown1(DropDown):
    pass

class DropDown2(DropDown):
    pass


class EraserDropDown(DropDown):
    pass


class Screen2(Screen):
    pass


class TheScreenManager(ScreenManager):
    pass


class TheApp(App):
    def build(self):
        return TheScreenManager()


TheApp().run()

【问题讨论】:

    标签: python kivy kivy-language


    【解决方案1】:

    这里的问题是,您在类中继承了 DropDown。您正在使用 kvlang 在该类中创建另一个 DropDown。
    尝试继承 BoxLayout 。这应该可以解决您的问题。
    像这样:

    from kivy.app import App
    from kivy.uix.screenmanager import ScreenManager, Screen
    from kivy.lang import Builder
    from kivy.uix.boxlayout import BoxLayout
    
    Builder.load_string('''
    <TheScreenManager>:
        Screen1:
    
    <Screen1>:
        name: 'screen1'
        BoxLayout:
            orientation: 'vertical'
            BoxLayout: # Menu
                size_hint_y: None
                orientation: 'horizontal'
                height: 48
    
                DropDown1:
    
    
            Label: 
                id: label
                text: 'I am a label'
                font_size: 30
                size_hint_y: 0.99
    
    
    <DropDown1>:
        Button:
            id:btn1
            text: 'btn1'
            on_release: dropdown1.open(self)
            size_hint_y: None
            height: '48dp'
    
        DropDown:
            id: dropdown1
            on_parent: self.dismiss()
            on_select: btn1.text = '{}'.format(args[1])
    
            Button:
                text: 'My first Item'
                size_hint_y: None
                height: 44
                on_release: dropdown1.select('item1')
    
    
    ''')
    
    
    class Screen1(Screen):
        pass
    
    
    class DropDown1(BoxLayout):
        pass
    
    class Screen2(Screen):
        pass
    
    
    class TheScreenManager(ScreenManager):
        pass
    
    
    class TheApp(App):
        def build(self):
            return TheScreenManager()
    
    
    TheApp().run()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-21
      • 1970-01-01
      • 2015-06-06
      • 1970-01-01
      • 2011-03-15
      相关资源
      最近更新 更多