利用所提出的源代碼,如果在類可變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