利用所提出的源代码,如果在类可变controller
具有在具有moveOn()
类的b2=Button(...)
和不是,它是时间重用command=lambda: ...
代替假定command=self.moveOn
。
变量controller
肯定的 类__init__()
构造函数的参数之一。所以,它是一个局部变量,在调用函数moveOn()
之前,它不会退出。
解决方案1 - 使用command=lambda:
到constroller
发送到功能moveOn()
。
首先修改“返回”Button
的command
。
b2=Button(self, text="Back", command=lambda: self.moveOn(controller))
b2.pack()
相反的:
b2=Button(self, text="Back", command=self.moveOn)
b2.pack()
然后加入controller
为moveOn()
参数。
def moveOn(self,controller):
controller.show_frame(LoginPage)
self.l6.destroy()
代替:
def moveOn(self):
controller.show_frame("StartPage")
self.l6.destroy()
解决方案2 - 存储所述参数controller
为类变量。
在具有b2=Button(...)
的类的__init__()
函数中。
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
...
self.controller = controller
...
在moveOn()
使用该变量:
def moveOn(self,controller):
self.controller.show_frame(LoginPage)
self.l6.destroy()
如果定义了'controller'?显示你的类和函数的定义顺序。 – nbro