繁体   English   中英

Tkinter:如何使用 OptionMenu 小部件调用函数?

[英]Tkinter: How to call a function using the OptionMenu widget?

我正在开发一个简单的 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 小部件时它不打印“你好”或“再见”。 以及如何修复它以便我可以使用变量 z 而不更改该行上方的部分?

谢谢!

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 现在在 OptionMenu 选择更改时执行function ——如果选项菜单读取“yes”,则function以“yes”作为其参数执行,并将a设置为“hello”并将a设置为“bye”以用于所有其他选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM