首页 > 解决方案 > 仅在调用函数时继续

问题描述

用户应该从下拉菜单的列表中选择一个事项。然后它会用 Turtle mudole 给出这个问题的示意图,我在这里不包括在内。我希望它等待计算

m = n - 1

在用户的输入被注册之后。

from tkinter import *

OPTIONS = ['methaan','ethaan','propaan','butaan']


master = Tk()

variable = StringVar(master)
variable.set(OPTIONS[0]) # default value

w = OptionMenu(master, variable, *OPTIONS)
w.pack()

def ok():
    variable.get()
    if variable == 'methaan':
        n = 1
    elif variable == 'ethaan':
        n = 2
    elif variable == 'propaan':
        n = 3
    elif variable == 'butaan':
        n = 4


button = Button(master, text="OK", command=ok)
button.pack()

m = n - 1
print(m)
mainloop()

它返回n未定义。

期望的结果

# 0 to 3 depending on what matter you choose.

先感谢您。

标签: pythontkinter

解决方案


在函数本身内移动最后两行,因为如果它们在mainloop.

这是完整的代码:

from tkinter import *

OPTIONS = ['methaan','ethaan','propaan','butaan']


master = Tk()

variable = StringVar(master)
variable.set(OPTIONS[0]) # default value

w = OptionMenu(master, variable, *OPTIONS)
w.pack()

def ok():
    if variable.get() == 'methaan':
        n = 1
    elif variable.get()  == 'ethaan':
        n = 2
    elif variable.get()  == 'propaan':
        n = 3
    elif variable.get()  == 'butaan':
        n = 4
    m = n - 1
    print(m)

button = Button(master, text="OK", command=ok)
button.pack()
mainloop()

推荐阅读