如何在功能之外继续执行程序?

时间:2020-03-30 01:11:21

标签: python python-3.x user-interface tkinter

我是python的新手,在尝试构建GUI时被卡住了。我找不到从“登录”功能中提取数据的方法,这是用户登录后创建的新的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 :(得分:0)

您的代码破坏了缩进。函数定义之后的行必须在函数范围之内,如下所示:

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

无论如何,您都可以在函数末尾返回任何类型的数据。考虑像这样公开您的TopLevel应用:

return TopLevel()
相关问题