首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python - tkinter如何使用带get函数的if语句?

Python - tkinter如何使用带get函数的if语句?
EN

Stack Overflow用户
提问于 2018-11-12 14:18:03
回答 2查看 1.7K关注 0票数 1

标题不是很容易理解,我知道,所以让我在这里解释。

基本上如果我做了

代码语言:javascript
复制
if variable.get() == "Select Website":
    print("ok")

它将打印"ok",但如果我将它从"Select“更改为"Fareham”,并且将下拉框中的选项更改为"Fareham“,它将不会注意到它发生了变化。如果我想让它注意到它的变化,我需要执行一个while循环,但是这首先会停止脚本的运行。

如果变量更改为"Fareham“,如何使脚本打印出"ok”?

现行法典:

代码语言:javascript
复制
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()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-12 14:34:05

您可以通过将回调函数与下拉菜单相关联来做到这一点:

代码语言:javascript
复制
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()
票数 0
EN

Stack Overflow用户

发布于 2018-11-12 14:31:37

在这里可以找到一些重要的信息:http://effbot.org/tkinterbook/variable.htm

通过为变量variable设置一个观察者,它将在每次更改时检查它。

代码语言:javascript
复制
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语句中,它就会像魅力一样工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53264079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档