超级和 Tkinter

Super and Tkinter

初学者在 Tkinter 中对 Super 的帮助。

我想了解如何在 tkinter 应用程序中使用 super() 。我需要引用父 class 的属性。从代码中,按下带有 super().init 的按钮被调用,调用另一个父级并且不根据需要引用信息。与 super().init 未调用,即注释掉,它抛出一个属性错误。谁能告诉我如何在不重写(和覆盖)原始信息的情况下调用超级属性。

import tkinter as tk

class Parent():

    def __init__(self,master):

        self.sym = 'tree'
        self.cl = 3
        self.enter = tk.Entry(master)
        self.enter.pack()
        self.button = tk.Button(master,text='text', command= lambda: Child(master))
        self.button.pack()


class Child(Parent):

    def __init__(self,master):
#        super().__init__(master)
        print(self.enter.get(), self.cl)

root = tk.Tk()
a = Parent(root)
root.mainloop()

你似乎在做的不是 subclassing 的目的。您正在尝试使用 class 的 new 实例来获取父 class 的 different 实例的属性=].

执行子classing 的正确方法是而不是 创建Parent 的实例。相反,创建 Child 的实例。这样,Child 的实例将可以访问父 class 定义中的所有内容。

示例:

import tkinter as tk

class Parent():

    def __init__(self,master):

        self.sym = 'tree'
        self.cl = 3
        self.enter = tk.Entry(master)
        self.enter.pack()
        self.button = tk.Button(master,text='text', command= self.print_value)
        self.button.pack()

class Child(Parent):

    def __init__(self,master):
        super().__init__(master)
        print(self.enter.get(), self.cl)

    def print_value(self):
        print(self.enter.get())


root = tk.Tk()
a = Child(root)
root.mainloop()