标题不是很容易理解,我知道,所以让我在这里解释。
基本上如果我做了
if variable.get() == "Select Website":
print("ok")它将打印"ok",但如果我将它从"Select“更改为"Fareham”,并且将下拉框中的选项更改为"Fareham“,它将不会注意到它发生了变化。如果我想让它注意到它的变化,我需要执行一个while循环,但是这首先会停止脚本的运行。
如果变量更改为"Fareham“,如何使脚本打印出"ok”?
现行法典:
import tkinter
sites = [
"Fareham",
"Hants",
"Southampton",
"Eastleigh",
"Havant",
"Gosport",
]
win = tkinter.Tk()
win.geometry("500x500")
variable = tkinter.StringVar(win)
variable.set("Select Website")
drop = tkinter.OptionMenu(win, variable, *sites)
drop.pack()
if variable.get() == "Fareham":
print("ok")
win.mainloop()发布于 2018-11-12 14:34:05
您可以通过将回调函数与下拉菜单相关联来做到这一点:
import tkinter
def your_callback(*args):
if args[0] == "Fareham":
print("ok")
sites = [
"Fareham",
"Hants",
"Southampton",
"Eastleigh",
"Havant",
"Gosport",
]
win = tkinter.Tk()
win.geometry("500x500")
variable = tkinter.StringVar(win)
variable.set("Select Website")
drop = tkinter.OptionMenu(win, variable, *sites, command = your_callback)
drop.pack()
win.mainloop()发布于 2018-11-12 14:31:37
在这里可以找到一些重要的信息:http://effbot.org/tkinterbook/variable.htm
通过为变量variable设置一个观察者,它将在每次更改时检查它。
def check(*args):
if variable.get() == 'Fareham':
print 'ok'
variable.trace(
'w', # 'w' checks when a variable is written (aka changed)
check # this is the function it should call when the variable is changed
)只要将代码放在当前的if语句中,它就会像魅力一样工作。
https://stackoverflow.com/questions/53264079
复制相似问题