Tkinter:如何通过OptionMenu控件调用函数?
我正在做一个简单的Python-Tkinter应用程序。下面是我现在代码的简化版本。
from Tkinter import *
root = Tk()
def function(x):
if x == "yes":
a.set("hello")
else:
a.set("bye")
#-----------------------------
a = StringVar()
a.set("default")
oc = StringVar(root)
oc.set("Select")
o = OptionMenu(root, oc, "yes", "no", command=function)
o.pack()
z = a.get()
print z # prints default
root.mainloop()
我希望这段代码能在控制台打印“hello”或“bye”,但它却打印了“default”。
我一直在尝试让它正常工作,但总是搞不明白。直接调用这个函数时代码运行得很好,但如果使用Optionmenu这个小部件就不行了:
z = function("yes")
print z #prints hello
或者:
z = function("no")
print z #prints bye
有人能解释一下为什么在使用Optionmenu小部件时,它不打印“hello”或“bye”吗?我该怎么做才能在不改变上面那部分代码的情况下使用变量z呢?
谢谢!
1 个回答
5
from Tkinter import *
root = Tk()
a = StringVar()
a.set("default")
oc = StringVar(root)
oc.set("Select")
def function(x):
if x == "yes":
a.set("hello")
print a.get()
else:
a.set("bye")
print a.get()
o = OptionMenu(root, oc, "yes", "no", command=function)
o.pack()
z = a.get()
print z
root.mainloop()
当你改变选项菜单的选择时,OptionMenu会立即执行function
这个函数。如果选项菜单显示的是“yes”,那么function
就会用“yes”作为参数来执行,并把a
的值设置为“hello”。而对于其他的选项,a
的值会被设置为“bye”。