Сохранить строку tkinter для использования после mainloop - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь запустить мой сценарий, а затем сохранить строку ввода пользователя после окончания основного цикла, так как я затем хочу вызвать его позже в том же сценарии 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 голосов
/ 08 мая 2018

Вы можете использовать обработчики протокола Tkinter , чтобы определить свой собственный обработчик для удаления окна, используя 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...