单击标签时,菜单按钮消失
When I click on a label, the menu button disappears
在下面的代码中,当我单击标签上的 时,菜单按钮从屏幕上消失。我该如何解决?
我在 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()
这里的问题是,您在 classes 中继承了 DropDown。您正在 kvlang 中的 class 中创建另一个 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()
在下面的代码中,当我单击标签上的 时,菜单按钮从屏幕上消失。我该如何解决?
我在 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()
这里的问题是,您在 classes 中继承了 DropDown。您正在 kvlang 中的 class 中创建另一个 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()