Python 单击标签时,菜单按钮消失

Python 单击标签时,菜单按钮消失,python,kivy,kivy-language,Python,Kivy,Kivy Language,在下面的代码中,当我单击标签上的时,菜单按钮从屏幕上消失。我怎样才能解决这个问题 我使用kivy 1.9.2dev在windows 10上尝试了这一点 代码只是创建一个屏幕管理器,然后添加两个屏幕。然后添加垂直和水平框布局 from kivy.app import App from kivy.uix.screenmanager import ScreenManager, Screen from kivy.uix.dropdown import DropDown from kivy.lang im

在下面的代码中,当我单击标签上的时,菜单按钮从屏幕上消失。我怎样才能解决这个问题

我使用kivy 1.9.2dev在windows 10上尝试了这一点

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

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()

这里的问题是,您在类中继承了下拉列表。您正在kvlang中的该类中创建另一个下拉列表。 请尝试继承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()