You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 20:11:28