无法在现有框架中通过 class def 显示小部件

can not display widget through class def in existing frame

翻阅博客、教程等,我一直无法理解为什么以下代码不会在框架中显示标签。当我不定义 class 时,我可以很好地执行此任务,但我想创建此应用程序以便能够更动态地创建框架和其他小部件。这是代码。 init 工作正常并适当地在根 window 中显示一个框架。代码运行没有任何错误。我在 add_heading 函数中添加了 print 语句和 print(type()) 语句,但仍然没有显示标签。希望有人能告诉我我做错了什么。提前致谢

#!/usr/bin/python3
from tkinter import *

class CompFrame(Tk):

    def __init__(self, parent, rows, columns, title):
        Frame.__init__(self, parent)
        self.root = parent
        f_w = screen_width/3
        f_h = screen_height * .90
        self = LabelFrame(root, text=title, width=f_w, height=f_h, bg="light grey")
        self.grid_columnconfigure(columns, weight=1)
        self.grid(row=rows, column=columns)
        self.grid_propagate(False)

    def add_heading(self, title):
        label_width=12
        ftitle = Label(self, text=title)
        ftitle.configure(font='Helvetica 24 bold', width=label_width)
        ftitle.place(x=".5i", y=".2i")

root = Tk()
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)

screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
root.geometry("%dx%d%d%d" % (screen_width,screen_height,0,0))

Calibrator = PhotoImage(file="image1.png")
Feeeder = PhotoImage(file="image2.PNG")

frame1 = CompFrame(root, 0, 0, "Component 1")
frame1.add_heading("NATURAL")

root.mainloop()

self = LabelFrame(root ... 部分有问题,也许可以尝试这样的操作来保持对标签框的控制:

from tkinter import *

class CompFrame(Frame): # Edit with Bryan Oakley comment

    def __init__(self, parent, rows, columns, title):
        Frame.__init__(self, parent)
        self.root = parent
        f_w = screen_width/3
        f_h = screen_height * .90
        self.labelframe = LabelFrame(root, text=title, width=f_w, height=f_h, bg="light grey")
        self.labelframe.grid_columnconfigure(columns, weight=1)
        self.labelframe.grid(row=rows, column=columns)
        self.labelframe.grid_propagate(False)

    def add_heading(self, title):
        label_width=12
        ftitle = Label(self.labelframe, text=title)
        ftitle.configure(font='Helvetica 24 bold', width=label_width)            
        ftitle.place(x=5, y=2)