从另一个函数调用__init__函数

时间:2016-08-29 16:03:22

标签: python recursion

我需要一些帮助,所以我有这样的事情

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)

因此,如果用户选择再次尝试的选项,我需要重新启动整个程序,并显示登录框。但是当我执行程序时,进程失败。

2 个答案:

答案 0 :(得分:0)

  

但是当我执行程序时,进程失败。

实际上它应该。通常在创建实例后调用__init__方法。您需要重新设计它以重新创建一个实例(首先在该框架上调用pack_forget,然后在该框架上创建一个并打包),或者使用show_loginbox等方法执行此操作

通常,登录框是使用Toplevel Entry作为字段和一些按钮发布结果。如果这样做,出错时你可以简单地删除登录或/和密码输入框并显示错误 我的意思是:

first next

上面的参考实现是here

答案 1 :(得分:0)

您使用的是tkinter.Frame吗?

我认为不喜欢通过使用来重建     超级()。的初始化() 虽然已经被打包到根窗口(我正在宣传这是你的设置)。