在 Python 中从 Tkinter OptionMenu 获取值

新手上路,请多包涵

我试图打印出在选项菜单中选择的值,但每次运行代码时只打印第一个值,即使我将选择更改为 b 或 c。不知道我哪里错了。这是我的代码:

 from tkinter import *
window=Tk()
window.geometry("700x400")

options=StringVar(window)
options.set("a")
menu=OptionMenu(window,options, "a","b","c")
menu.grid(row=2,column=2)
selection=options.get()
print(selection)

原文由 West 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 987
1 个回答

您可以使用 --- 的 OptionMenu command 选项,而不是跟踪变量。每次单击菜单项时,都会调用该命令。这个命令有一个参数:被选中的项目。

 import tkinter as tk

def callback(selection):
    print(selection)

root = tk.Tk()
options = tk.StringVar()
menu = tk.OptionMenu(root, options, 'a', 'b', 'c', command=callback)
menu.pack()
options.set('a')
root.mainloop()

在这种情况下,最初选择的项目不会被打印出来,因为用户没有点击它。如果您需要 options.set('a') 触发您的回调,那么您将必须像 mentalita 的回答中那样跟踪变量。

原文由 j_4321 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题