Как продолжить программу вне функции? - PullRequest
0 голосов
/ 30 марта 2020

Я новичок в python и застрял при попытке построить GUI. Я не могу найти способ извлечь данные из функции 'login', которая будет новым окном TopLevel, созданным после входа пользователя в систему. Из-за этого я должен написать оставшийся код внутри 'функции входа в систему', но У меня сложилось впечатление, что должен быть другой путь. Я попытался сделать новый верхний уровень глобальным, но он возвращает, что новая переменная не определена.

from tkinter import *  
from tkinter import messagebox

root = Tk()

login_frame = LabelFrame(root, text = "login info").pack()
user_field = Label(login_frame, text = "user: ")
user_field.grid(row = 0,column = 0)
pass_field = Label(login_frame, text = "pass: ")
pass_field.grid(row = 1, column = 0)
user_input = Entry(login_frame)
user_input.grid(row = 0, column = 1)
pass_input = Entry(login_frame, show = "*")
pass_input.grid(row = 1, column = 1)

def login():
if user_input.get() == "user" and pass_input.get() == "user":
    if messagebox.showinfo("blah", "blah") == "ok":
        pass_input.delete(0, END)
        user_input.delete(0, END)
        root.withdraw()
        **app = Toplevel()**

else:
    messagebox.showerror("blah", "blah")
    pass_input.delete(0, END)
    user_input.delete(0, END)

login_btn = Button(login_frame, text = "LOGIN")
login_btn.grid(row = 2, column = 0)
exit_btn = Button(login_frame, text = "SAIR")
exit_btn.grid(row = 2, column = 1)    

root.mainloop()

1 Ответ

0 голосов
/ 30 марта 2020

Ваш код нарушает отступ. Строки, следующие за определением функции, должны находиться внутри области действия функции, например:

def login():
    if user_input.get() == "user" and pass_input.get() == "user":
        if messagebox.showinfo("blah", "blah") == "ok":
            ...

Независимо от этого, вы можете вернуть любой тип данных в конце функции. Подумайте о том, чтобы выставить ваше приложение TopLevel следующим образом:

return TopLevel()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...