Python GUI构造函数

时间:2015-05-30 13:07:37

标签: python

我是Python的新手,但不是编程。在this tutorial中,作者在其类中初始化了一个构造函数,如下所示:

class simpleapp_tk(Tkinter.Tk):
    def __init__(self,parent):
        Tkinter.Tk.__init__(self,parent) 

我理解它,你在C#和Java中做同样的事情。但是,在this tutorial中,为什么作者不这样做呢?他只初始化应用程序。像这样:

app = Tk()

在什么情况下我会在第一次做第二次?您觉得哪个更好?

2 个答案:

答案 0 :(得分:0)

个人我总是做第二次,因为当你制作更长的应用程序时,它会更容易。以下是使用第二个示例:

from Tkinter import *

app = Tk()    #app is a variable, so in the future, you can define Tk() as anything you want. Most people call it root
frame = Frame(app)
frame.pack()

bottomframe = Frame(app)
bottomframe.pack( side = BOTTOM )

redbutton = Button(frame, text="Red", fg="red")
redbutton.pack( side = LEFT)

greenbutton = Button(frame, text="Brown", fg="brown")
greenbutton.pack( side = LEFT )

bluebutton = Button(frame, text="Blue", fg="blue")
bluebutton.pack( side = LEFT )

blackbutton = Button(bottomframe, text="Black", fg="black")
blackbutton.pack( side = BOTTOM)

app.mainloop()
祝你好运。抱歉,我无法完全回答你的问题

答案 1 :(得分:0)

重要的是要强调它与Java不同。 在Java中,如果子类承包商未指定对超类的特定承包商的调用,则编译器将自动调用超类中的可访问no-args构造函数。

在Python中不会发生。如果您不指定超级承包商的电话,那么将不会有任何电话。因此,在您的代码中,子类承包商的第一行是对超级承包商的要求:

Tkinter.Tk.__init__(self,parent) 

在学习新语言时,检查并理解这些问题非常重要。