Python 如何使按钮更改帧并调用函数(tkinter)
我有一段在tkinter中使用帧的代码。当按下“后退”按钮时,我希望更改帧并调用销毁标签的函数。目前我有以下代码:Python 如何使按钮更改帧并调用函数(tkinter),python,tkinter,Python,Tkinter,我有一段在tkinter中使用帧的代码。当按下“后退”按钮时,我希望更改帧并调用销毁标签的函数。目前我有以下代码: b2=Button(self, text="Back", command=lambda: controller.show_frame("StartPage")) b2.pack() 当按下按钮时,会更改帧 我尝试创建一个新函数,并在按下按钮而不是控制器时调用该函数: def moveOn(self): controller.show_frame("StartPage")
b2=Button(self, text="Back", command=lambda: controller.show_frame("StartPage"))
b2.pack()
当按下按钮时,会更改帧
我尝试创建一个新函数,并在按下按钮而不是控制器时调用该函数:
def moveOn(self):
controller.show_frame("StartPage")
self.l6.destroy()
但是我得到一个错误,控制器没有定义
我该如何解决我的问题,或者是否有其他更好的方法来解决
如果我需要提供更多的代码,请让我知道。如果变量
控制器
在具有b2=按钮(…)
的类中,而不是在具有moveOn()
的类中,是时候重用命令=lambda:…
而不是假定的命令=self.moveOn
变量controller
当然是
类\uuuu init\uuuu()
构造函数。因此,它是一个局部变量
在调用函数moveOn()
之前不会退出
解决方案1-使用命令=lambda:
将conroller
发送到函数moveOn()
首先修改“后退”按钮的命令
而不是:
b2=Button(self, text="Back", command=self.moveOn)
b2.pack()
def moveOn(self):
controller.show_frame("StartPage")
self.l6.destroy()
然后将controller
添加为moveOn()
参数
而不是:
b2=Button(self, text="Back", command=self.moveOn)
b2.pack()
def moveOn(self):
controller.show_frame("StartPage")
self.l6.destroy()
解决方案2-将参数控制器
存储为类变量
在具有b2=按钮(…)
的类的\uuuu init\uuuu()函数中
在moveOn()中使用该变量:
在哪里定义了控制器
?显示类和函数定义的顺序。
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
...
self.controller = controller
...
def moveOn(self,controller):
self.controller.show_frame(LoginPage)
self.l6.destroy()