我知道标题不是很容易理解,所以让我在这里解释一下。
如果可以的话,基本上
if variable.get() == "Select Website":
print("ok")
它将打印出“确定”,但是如果我将其从“选择网站”更改为“费勒姆”,以及将下拉框中的选项更改为“费勒姆”,则不会注意到它已更改。如果我希望它注意到它已更改,则需要执行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()
答案 0 :(得分:0)
在这里可以找到一些重要信息: 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
语句,它就会像超级按钮一样工作。
答案 1 :(得分:0)
您可以通过将回调函数与下拉菜单相关联来实现此目的:
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()