У меня есть графический интерфейс пользователя tkinter, в котором пользователь должен пройти аутентификацию на какой-либо системе. Когда пользователь нажимает RUN, появляется Toplevel для проверки подлинности, в котором пользователь вводит учетные данные, нажимает кнопку OK, и приложение создает экземпляр подключения из этих учетных данных.
Трудность, с которой я сталкиваюсь, заключается в передаче этого экземпляра соединения и отсутствии продолжения работы приложения до его успешного возврата. Вот чрезвычайно упрощенный фрагмент кода, который показывает общую схему.
import tkinter as tk
def log_in():
def click_ok():
username = usr_entry_var.get()
password = pwd_entry_var.get()
# This is the portion that creates a connection instance
# that I desire to later perform actions against in the
# form of connection.doStuff()
# I have just set it to some text here for brevity, as this
# portion is working fine.
connection = 'someStuffThatAuthenticates'
login.destroy()
login = tk.Toplevel()
usr_lbl = tk.Label(login, text='Username:')
usr_lbl.grid(column=0, row=0)
usr_entry_var = tk.StringVar()
usr_entry = tk.Entry(login, width=40, textvariable=usr_entry_var)
usr_entry.grid(column=1, row=0)
pwd_lbl = tk.Label(login, text='Password:')
pwd_lbl.grid(column=0, row=1)
pwd_entry_var = tk.StringVar()
pwd_entry = tk.Entry(login, width=40, textvariable=pwd_entry_var)
pwd_entry.grid(column=1, row=1)
ok_btn = tk.Button(login, text='OK', command=click_ok)
ok_btn.grid(column=0, columnspan=2, row=2)
def click_run():
connection = log_in()
# Here is where I perform actions against the returned connection instance.
# I am just printing it here for brevity.
print(str(connection))
root = tk.Tk()
run_btn = tk.Button(root, text='RUN', command=click_run)
run_btn.pack()
root.mainloop()
Результаты, которые я получаю из вышеизложенного, состоят в том, что как только я нажимаю кнопку RUN в корневом каталоге, код print()
s отсутствует, в то же время появляется экран входа в систему. Я пробовал довольно много вещей, чтобы получить код для
А) вернуть connection
успешно и
B) подождите, пока он не вернется, прежде чем пытаться его использовать
Вместо того, чтобы перечислять мои слабые попытки, я просто оставил здесь простой код.
Спасибо за любой совет!