python中的类在调用时需要参数吗



我是python的新手,实际上也是编程的新手,最近我正在用Tkinter做一个简单的项目。在这个项目中,我试图创建一个强制关注窗口,我终于从这个页面得到了答案。主要代码如下:

import tkinter as tk
class App(tk.Tk):
TITLE = 'Application'
WIDTH, HEIGHT, X, Y = 800, 600, 50, 50
def __init__(self):
tk.Tk.__init__(self)
tk.Button(self, text="open popout 1", command=self.open1).grid()
tk.Button(self, text="open popout 2", command=self.open2).grid()
def open1(self):
PopOut1(self)
def open2(self):
# .transient(self) ~
#    flash PopOut if focus is attempted on main
#    automatically drawn above parent
#    will not appear in taskbar
PopOut2(self).transient(self)

if __name__ == '__main__':
app = App()
app.title(App.TITLE)
app.geometry(f'{App.WIDTH}x{App.HEIGHT}+{App.X}+{App.Y}')
# app.resizable(width=False, height=False)
app.mainloop()

虽然它起了作用,但我仍然担心的一件事是,为什么他在类APP中指定了一个参数:

class App(tk.Tk):

然而,当他称之为时,班上什么都没有通过

app = App()

有人能回答吗,或者给我一些我可以专门搜索的关键词。我读过一些关于python类的教程,但没有一个提到它

这被称为继承。创建类的对象的所有参数,就像您在这里所做的那样:app = App(),都在__init__方法中。

class App(tk.Tk):此部分不是参数。相反,这表明App类继承了tk.tk类的方法。从本质上讲,这就是将应用程序类转变为Tkinter应用程序的原因。如果没有它,您就不会拥有Tkinter提供的任何功能。观察在代码的底部如何创建应用程序,然后调用app.mainloop()。请注意,您的应用程序类没有mainloop方法。它实际上来自于继承的tk.tk类。

也就是说,这是大多数语言中的一个主要话题,所以如果你简单地搜索";Python继承";。

相关内容

最新更新