保存tkinter字符串以便在mainloop之后使用

时间:2018-05-08 14:38:20

标签: python tkinter

我正在尝试让我的脚本运行,然后在mainloop结束后保存用户输入字符串,因为我想稍后在同一个python脚本中调用它(但不是在tkinter中)。 我想保存的字符串是位置(w)和mac。 如果您有任何想法,请参阅下面的脚本并告诉我们。

from Tkinter import *

OPTIONS = [
"Choose Site",
"Site1",
"Site2",
"Site3",
] 


master = Tk()

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

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

mac= Entry (master, text= "Enter Mac Address")
mac.pack()


def call_and_ok():
    print ("Location:" + variable.get())
    print ("MAC address is:" + mac.get())

button_1 = Button(master, text="RUN", command=call_and_ok,)
button_1.pack()


mainloop()


location = variable.get()
macstored = mac.get()

print (location)

1 个答案:

答案 0 :(得分:1)

您可以使用Tkinter的protocol handlers来定义您自己的处理程序,以便使用master.protocol("WM_DELETE_WINDOW", callback)删除窗口。在此处理程序中,您可以确保获取当前值并在实际销毁主循环之前存储它们(在全局变量中)。

在致电mainloop()

之前将其放置
location = ''
macstored = ''

def callback():
    global location
    global macstored
    location = variable.get()
    macstored = mac.get()
    master.destroy()

master.protocol("WM_DELETE_WINDOW", callback)