我目前正在编写一个应用程序,并为此创建了三个类。 第一类包含所有功能。第二类包含“窗口”小部件,第三类包含导航栏。
当我从第二个类继承第一个类时,按钮将起作用并执行功能。从导航类继承窗口类的那一刻起,我也从该类继承了函数类,我的小部件一下子翻了一番。 按钮起作用(两个按钮都起作用),但显然我不希望它加倍。
有人可以向我解释吗?
This is the output with inheritance from Start to FunctionClass
This is the output when TopMenu inherits from Start and Start from FunctionClass
我的代码是:
from tkinter import *
class FunctionClass:
def print_text(self):
print("This is an example!")
class Start(FunctionClass):
def __init__(self, master):
super().__init__()
frame = Frame(master)
frame.pack()
self.label = Label(frame,text="This is just a label.").pack()
self.label2 = Label(frame, text="This is second label.").pack()
self.button = Button(frame, text="Magic Button", command=self.print_text).pack()
class TopMenu(Start):
def __init__(self, master):
super().__init__(master)
# *******Top-Navigation Bar**********
tnb = Menu(master)
root.config(menu=tnb)
# *******tnb_file*******
tnb_file = Menu(tnb, tearoff=0)
tnb.add_cascade(label="File", menu=tnb_file)
tnb_file.add_command(label="Button", command=self.print_text)
tnb_file.add_separator()
tnb_file.add_command(label="Exit", command=root.destroy)
root = Tk()
g = Start(root)
d = TopMenu(root)
root.mainloop()
答案 0 :(得分:0)
继承表示是一个。如果“狗”是从“动物”继承而来的,则“狗” 是“动物”。
当TopMenu
继承自Start
时,TopMenu
是 Start
。 Start
可以或可以通过TopMenu
完成的任何事情。因此,由于Start
创建了一些小部件,因此从Start
继承的任何内容也将创建小部件。
执行此操作时:
g = Start(root)
d = TopMenu(root)
...首先使用g = Start(root)
创建窗口小部件,然后在执行d = TopMenu
时再次创建窗口小部件。同样,这是因为TopMenu
_是Start
。