本文介紹了編寫 MDDropdownMenu 項的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我嘗試在 MDDropdownMenu 中寫入所選項目.但是,即使有這段代碼,我也找不到menu.bind (.....) 函數沒有任何結果
I try to write the selected item in MDDropdownMenu. But, even with this code, I don't find it I don't have any result with menu.bind (.....) function
from kivymd.app import MDApp
from kivymd.uix.menu import MDDropdownMenu
from kivy.lang import Builder
from kivy.clock import Clock
from kivymd.uix.screen import Screen
KV = """
<BuildApp>:
MDRaisedButton:
id: button
text: "PRESS ME"
pos_hint: {"center_x": .5, "center_y": .5}
on_release: root.menu.open()
BuildApp:
"""
class BuildApp(Screen):
def __init__(self, **kwargs):
super().__init__(**kwargs)
Clock.schedule_once(self._late_init)
def _late_init(self, interval):
menu_items = [{"text": f"Item {i}"} for i in range(5)]
self.menu = MDDropdownMenu(
caller=self.ids.button,
items=menu_items,
width_mult=4,
)
self.menu.bind(on_release=self.menu_callback)
def menu_callback(self, instance_menu, instance_menu_item):
print(instance_menu, instance_menu_item)
class MainApp(MDApp):
def build(self):
self.root = Builder.load_string(KV)
MainApp().run()
另外,如何在.Kv文件中編寫MDDropdownMenu部分
In addition, how can I write the MDDropdownMenu part in .Kv file
最好的問候
推薦答案
使用MDDropdownMenu
的callback
屬性:
def _late_init(self, interval):
menu_items = [{"text": f"Item {i}"} for i in range(5)]
self.menu = MDDropdownMenu(
caller=self.ids.button,
items=menu_items,
callback=self.menu_callback,
width_mult=4,
)
def menu_callback(self,instance_menu_item):
print(instance_menu_item.text)
你可以在kv
中定義下拉菜單,像這樣:
You can define the drop down menu in the kv
, like this:
from kivymd.app import MDApp
from kivymd.uix.menu import MDDropdownMenu
from kivy.lang import Builder
from kivy.clock import Clock
from kivymd.uix.screen import Screen
KV = """
<MyMenu>:
items: [{'text':'item 0'}, {'text':'item 1'}, {'text':'item 2'}, {'text':'item 3'}, {'text':'item 4'}]
caller: app.root.ids.button
callback: app.root.menu_callback
width_mult: 4
<BuildApp>:
MDRaisedButton:
id: button
text: "PRESS ME"
pos_hint: {"center_x": .5, "center_y": .5}
on_release: root.menu.open()
BuildApp:
"""
class MyMenu(MDDropdownMenu):
pass
class BuildApp(Screen):
def menu_callback(self, instance_menu_item):
print(instance_menu_item.text)
class MainApp(MDApp):
def build(self):
root = Builder.load_string(KV)
Clock.schedule_once(self.build_menu)
return root
def build_menu(self, dt):
# cannot create menu until after app is built because of references to app.root in kv
self.root.menu = MyMenu()
MainApp().run()
這篇關于編寫 MDDropdownMenu 項的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!
【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!