Python/Tkinter: root作为类/初始化Tkinter类中的实例变量



我创建了一个自定义的tkinter根窗口,带有自定义的标题栏和其他修改,作为一个类。该类保存在一个名为ModRoot的模块中。相关代码如下:

import tkinter as tk
class Rt(tk.Tk):
def __init__(self,winhght,winwdth,apptitle):
super().__init__()
# initialize instance variables
self.winhght = winhght
self.winwdth = winwdth
self.apptitle = apptitle

在主应用程序中,这个根窗口是用两行代码创建的,并添加了主循环。

import ModRoot
RootWindow = ModRoot.Rt(400,800,"App Title")
RootWindow.mainloop()

我有两个问题:

首先,这个根窗口工作得很好,但是,正如我过去所了解到的,有时使用特定方法会出现一些问题,这些问题不会立即显现出来。因此,第一个问题就是上面创建根窗口的方法是否可以接受和正确。

第二个问题与初始化实例变量(self。winhight = winhight等等)。奇怪的是,我发现,如果我注释掉这些行,类的工作原理和以前一样。然而,每个关于类的教程都指出这些变量必须初始化。如果是这样,为什么这个类要处理那些被注释掉的行呢?它们真的有必要吗?

所以第一个问题就是上面创建根窗口的方法是否可以接受和正确。

可以,可以接受。

然而,每个关于类的教程都指出这些变量必须初始化。如果是这样,为什么这个类要处理那些被注释掉的行呢?它们真的有必要吗?

我们不可能说。您在代码的其他地方使用self.winwdth,self.winhghtself.apptitle吗?只有在以后需要时才需要初始化它们。

最新更新