我正在尝试让我的脚本运行,然后在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)
答案 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)