Android 使用DropDown open()方法打开自定义下拉列表不起作用
我在kv文件中定义了一个基本的自定义下拉列表。应用程序GUI非常简单,顶部有一个按钮栏,屏幕的其余部分有一个文本输入。代码如下: dropdowntrialgui.pyAndroid 使用DropDown open()方法打开自定义下拉列表不起作用,android,python-3.x,kivy,kivy-language,Android,Python 3.x,Kivy,Kivy Language,我在kv文件中定义了一个基本的自定义下拉列表。应用程序GUI非常简单,顶部有一个按钮栏,屏幕的其余部分有一个文本输入。代码如下: dropdowntrialgui.py from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.dropdown import DropDown class CustomDropDown(DropDown): pass class DropDownTri
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.dropdown import DropDown
class CustomDropDown(DropDown):
pass
class DropDownTrialGUI(BoxLayout):
dropD = CustomDropDown()
def openMenu(self, widget):
self.dropD.open(widget)
class DropDownTrialGUIApp(App):
def build(self):
return DropDownTrialGUI()
if __name__== '__main__':
dbApp = DropDownTrialGUIApp()
dbApp.run()
和kv文件:
压降TrialGui.kv
DropDownTrialGUI:
<CustomDropDown>
Button:
text: 'My first Item'
size_hint_y: None
height: '28dp'
on_release: root.select('item1')
Button:
text: 'My second Item'
size_hint_y: None
height: '28dp'
on_release: root.select('item2')
<DropDownTrialGUI>:
orientation: "vertical"
padding: 10
spacing: 10
BoxLayout:
size_hint_y: None
height: "28dp"
Button:
id: toggleHistoryBtn
text: "History"
size_hint_x: 15
Button:
id: deleteBtn
text: "Delete"
size_hint_x: 15
Button:
id: replaceBtn
text: "Replace"
size_hint_x: 15
Button:
id: replayAllBtn
text: "Replay All"
size_hint_x: 15
Button:
id: menuBtn
text: "..."
size_hint_x: 15
on_press: root.openMenu(self)
TextInput:
id: readOnlyLog
size_hint_y: 1
readonly: True
DropDownTrialGUI:
按钮:
文本:“我的第一项”
尺寸提示:无
高度:“28dp”
发布时:root.select('item1')
按钮:
文本:“我的第二项”
尺寸提示:无
高度:“28dp”
发布时:root.select('item2')
:
方向:“垂直”
填充:10
间距:10
盒子布局:
尺寸提示:无
高度:“28dp”
按钮:
id:toggleHistoryBtn
文本:“历史”
尺寸提示:15
按钮:
id:deleteBtn
案文:“删除”
尺寸提示:15
按钮:
id:replaceBtn
案文:“替换”
尺寸提示:15
按钮:
id:replayAllBtn
文本:“全部重播”
尺寸提示:15
按钮:
id:menuBtn
案文:“…”
尺寸提示:15
按:root.openMenu(self)
文本输入:
id:readOnlyLog
尺寸提示:1
只读:正确
按菜单按钮无效。如何解决该问题?您没有正确初始化该类,一般来说,您不应该将任何内容定义为类属性(kivy属性除外),而是通过在
\uuuu init\uuuu
方法中将小部件实例化为实例属性:
class DropDownTrialGUI(BoxLayout):
def __init__(self, **kwargs):
super(DropDownTrialGUI, self).__init__(**kwargs)
self.dropD = CustomDropDown()
def openMenu(self, widget):
self.dropD.open(widget)