我是Python的新手,但不是编程。在this tutorial中,作者在其类中初始化了一个构造函数,如下所示:
class simpleapp_tk(Tkinter.Tk):
def __init__(self,parent):
Tkinter.Tk.__init__(self,parent)
我理解它,你在C#和Java中做同样的事情。但是,在this tutorial中,为什么作者不这样做呢?他只初始化应用程序。像这样:
app = Tk()
在什么情况下我会在第一次做第二次?您觉得哪个更好?
答案 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)
在学习新语言时,检查并理解这些问题非常重要。