为了账号安全,请及时绑定邮箱和手机立即绑定

更改 StringVar 时,OptionMenu 小部件不会更新,直到悬停

更改 StringVar 时,OptionMenu 小部件不会更新,直到悬停

慕妹3146593 2022-03-09 20:38:43
我需要一个菜单,它可以响应通过运行代码单击的项目,然后将文本切换回默认文本。目前,我的实现有效,但默认文本仅在单击后光标悬停在菜单上时显示。我已经搜索过,但找不到与此问题相关的任何内容,尽管这可能是因为我不确定究竟是什么原因造成的。这是重现此行为的代码:from tkinter import *root = Tk()default_text = 'select an item'def thing_selected(self, *args):    #other stuff happens here    var.set(default_text)var = StringVar(root)var.set(default_text)var.trace('w', thing_selected)menu = OptionMenu(root, var, *['Pizza','Lasagne','Fries','Fish'])menu.pack()root.mainloop()这是一个代表结果的gif:我希望顶部的文本会立即更新,但只有当光标悬停在小部件上时才会更新我正在寻找某种方法来触发小部件上的悬停事件,或者我愿意接受任何其他方法的建议来实现这一点。
查看完整描述

1 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

您可以采取不同的路线并使用以下command属性OptionMenu:


import tkinter as tk


root = tk.Tk()


default_text = 'select an item'


def thing_selected(selected):

    #other stuff happens here

    print(var.get())

    var.set(default_text)

    print(var.get())


var = tk.StringVar()

var.set(default_text)


options = ['Pizza','Lasagne','Fries','Fish']

menu = tk.OptionMenu(root, var, *options, command = thing_selected)

menu.pack()


root.mainloop()


查看完整回答
反对 回复 2022-03-09
  • 1 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号