MrY*_*ath 3 python kivy drop-down-menu kivy-language
我正在尝试通过以下代码获取MDDropwdownMenu我正在使用的 kv 文件中的选择MDRaisedButton
MDRaisedButton:\n id: select_warning_image_Button\n text: "Menu labels" \n opposite_colors: True\n elevation_normal: 0\n on_release: MDDropdownMenu(items=app.menu_labels, width_mult=4).open(self)\nRun Code Online (Sandbox Code Playgroud)\n\n在我的main.py(见下文)中,我有一个名为的类MainApp继承自App. 在这个类中我创建了属性变量menu_labels。我想使用该函数change_variable将变量的值设置VARIABLE为菜单的值。但我似乎无法使用 self.change_variable(\xe2\x80\xa6)。当选择下拉列表中的特定值时,是否有一个值可以触发函数?
# main.py\nimport \xe2\x80\xa6\n\n\nclass MainApp(App):\n VARIABLE = ""\n\n menu_labels = [\n {"viewclass": "MDMenuItem",\n "text": "Label1",\n "on_release": self.change_variable("Label1")},\n {"viewclass": "MDMenuItem",\n "text": "Label2",\n "on_release": self.change_variable("Label2")},\n ]\n\n def change_variable(self, label):\n self.VARIABLE = label\nRun Code Online (Sandbox Code Playgroud)\n
在输出中,Label2被选中。有关详细信息,请参阅代码片段、示例和输出。
<MDMenuItem>:on_release事件以调用change_variable()App 类中的方法并传递self.text给它。<MDMenuItem>:
on_release: app.change_variable(self.text)
Run Code Online (Sandbox Code Playgroud)
from kivy.app import App
from kivymd.theming import ThemeManager
class MainApp(App):
title = "KivyMD MDDropdownMenu Demo"
theme_cls = ThemeManager()
VARIABLE = ""
menu_labels = [
{"viewclass": "MDMenuItem",
"text": "Label1"},
{"viewclass": "MDMenuItem",
"text": "Label2"},
]
def change_variable(self, value):
print("\nvalue=", value)
self.VARIABLE = value
print("\tself.VARIABLE=", self.VARIABLE)
if __name__ == "__main__":
MainApp().run()
Run Code Online (Sandbox Code Playgroud)
#:kivy 1.11.0
#:import MDDropdownMenu kivymd.menu.MDDropdownMenu
#:import MDRaisedButton kivymd.button.MDRaisedButton
<MDMenuItem>:
on_release: app.change_variable(self.text)
Screen:
name: 'menu'
MDRaisedButton:
id: select_warning_image_Button
size_hint: None, None
size: 3 * dp(48), dp(48)
text: 'Menu labels'
opposite_colors: True
elevation_normal: 0
pos_hint: {'center_x': 0.1, 'center_y': 0.9}
on_release: MDDropdownMenu(items=app.menu_labels, width_mult=4).open(self)
Run Code Online (Sandbox Code Playgroud)