Kivy Python:如何将按钮on_release事件的文本保存为变量
保存Kivy下拉菜单选择的数字
要保存用户选择的数字,你可以通过以下两种方式实现:
方法1:利用全局变量 + DropDown的on_select事件
这是最简洁高效的方式,因为DropDown的on_select事件本身会传递选中的文本,我们可以在回调里同时完成按钮文本更新和变量赋值:
修改后的完整代码
from kivy.uix.dropdown import DropDown from kivy.uix.button import Button from kivy.base import runTouchApp # 定义全局变量存储选中的月份数字 selected_month = None # 创建下拉菜单 dropdown = DropDown() for index in range(1, 13): btn = Button(text='%d month' % index, size_hint_y=None, height=44) # 绑定按钮释放事件,触发下拉菜单选择操作 btn.bind(on_release=lambda btn: dropdown.select(btn.text)) dropdown.add_widget(btn) # 创建主按钮 mainbutton = Button(text='How many months ago', size_hint=(None, None)) mainbutton.bind(on_release=dropdown.open) # 自定义下拉选择事件处理函数 def handle_select(instance, selected_text): global selected_month # 从选中文本中提取数字并转为整数 selected_month = int(selected_text.split()[0]) # 更新主按钮显示文本 mainbutton.text = selected_text dropdown.bind(on_select=handle_select) # 后续逻辑中可直接调用selected_month变量 # 例如:if selected_month >= 6: do something... runTouchApp(mainbutton)
方法2:直接在按钮on_release事件中保存
如果需要在按钮释放时立即保存值,可修改按钮的绑定逻辑:
# 替换原按钮绑定代码 def save_and_select(btn): global selected_month selected_month = int(btn.text.split()[0]) dropdown.select(btn.text) btn.bind(on_release=save_and_select)
这种方式需要在按钮释放时同时完成保存和触发select事件,相比方法1稍显冗余,推荐优先使用方法1。
内容的提问来源于stack exchange,提问作者zigga
相关产品推荐
相关产品推荐

