我需要一些帮助,所以我有这样的事情
class LoginFrame(Frame):
def __init__(self, master):
super().__init__(master)
...
...
...
def _login_btn_clickked(self):
...
...
result = messagebox.askyesno("Wrong username or password.", "Do you want to try again?")
if result == True:
self.__init__(self)
因此,如果用户选择再次尝试的选项,我需要重新启动整个程序,并显示登录框。但是当我执行程序时,进程失败。
答案 0 :(得分:0)
但是当我执行程序时,进程失败。
实际上它应该。通常在创建实例后调用__init__
方法。您需要重新设计它以重新创建一个实例(首先在该框架上调用pack_forget
,然后在该框架上创建一个并打包),或者使用show_loginbox
等方法执行此操作
通常,登录框是使用Toplevel
Entry
作为字段和一些按钮发布结果。如果这样做,出错时你可以简单地删除登录或/和密码输入框并显示错误
我的意思是:
上面的参考实现是here
答案 1 :(得分:0)
您使用的是tkinter.Frame吗?
我认为不喜欢通过使用来重建 超级()。的初始化强>() 虽然已经被打包到根窗口(我正在宣传这是你的设置)。