我想了解以下代码的含义:
class PageOne(tk.Frame):
def __init__(self, parent, controller):
Run Code Online (Sandbox Code Playgroud)
什么是self
,parent
和controller
?这些工具的作用和范围是什么?
我相信在Java中self
类似this
,但有什么用?parent
和controller
?
稍后在代码流程中我可以看到:
button1 = tk.Button(self, text="Back to Home",
command=lambda: controller.show_frame(StartPage))
Run Code Online (Sandbox Code Playgroud)
有一个已定义的函数被调用show_frame
,但为什么控制器被用来调用这个函数?
Bry*_*ley 13
粗略地说,原始代码1试图使用伪MVC(模型,视图和控制器)架构.虽然没有"模型"部分 - 但只有一个"视图"(一些框架)和一个"控制器"(主要应用程序).因此,对控制器对象的引用.原始代码实际上是为了显示如何"堆叠"框架而编写的,因此它的MVC实现非常浅,并且记录不足,因为这不是示例的要点.
回答您的具体问题:
self表示当前对象.这是类的任何方法的常见第一个参数.如你所说,这是类似于Java的这种.
parent表示一个小部件,用作当前对象的父级.除根窗口外,tkinter中的所有小部件都需要父级(有时也称为主级)
controller表示一些其他对象,旨在充当几个小部件页面的公共交互点.这是尝试解耦页面.也就是说,每个页面不需要知道其他页面.如果它想要与另一个页面交互,例如使其可见,它可以要求控制器使其可见.
你问"有一个已定义的函数名为show_frame,但为什么控制器被用来调用这个函数?" 请注意,它show_frame
是在一个单独的类中定义的,在本例中是主程序类.它没有在其他类中定义.对于其他类可以调用它,它们必须在主类的实例上调用它.该实例controller
在这些其他类的上下文中命名.
1注意:即使您可能在在线教程中找到原始代码,它最初来自此stackoverflow答案:在tkinter中的两个帧之间切换
归档时间: |
|
查看次数: |
14278 次 |
最近记录: |