ttk Notebook 无法在其他框架中显示自定义框架中的小部件(tkinter class 继承问题)

ttk Notebook cannot show widgets in a customized frame in other frames(tkinter class inheritance problem)

我创建了几个框架,我想把它们都打包成一个主框架。因此,我可以将它们作为一个组并添加到 ttk.Notebook.

中的选项卡中

但是,当我先将我的 class 的母版设置为其他框架,然后将母版添加到 ttk.Notebook 时,选项卡总是无法显示我的小部件!但是如果我直接把我的相框加到notebook上就没问题了

这是我的代码片段:

import tkinter as tk
from tkinter import ttk


class PathWindow(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, *args, **kwargs)
        self.path_label = ttk.Label(self, text='PathWindow Label').pack()

root = tk.Tk()
nb = ttk.Notebook(root)
nb.pack()
path_frame1 = PathWindow(nb)
nb.add(path_frame1, text='path_frame1')
frame3 = tk.Frame(nb)
path_frame2 = PathWindow(frame3)
path_frame2.pack
btn3 = tk.Button(path_frame2, text='btn in path_frame2')
btn3.pack()
nb.add(frame3, text='frame3, contain path_frame2')

root.mainloop()

frame3 似乎从来没有显示过内容!

如果我使用默认的tk.Frame class作为其他tk.Frame的主人,它工作正常,所以我觉得我的class出了问题。但是我说不出来! 谁能告诉我这里出了什么问题?

您忘记在此处放置方括号 path_frame2.pack()。另外,应该是tk.Frame.__init__(self, parent, *args, **kwargs)。您忘记将 parent 放在那里。希望对您有所帮助!