【问题标题】:ttk Notebook cannot show widgets in a customized frame in other frames(tkinter class inheritance problem)ttk Notebook 无法在其他框架中的自定义框架中显示小部件(tkinter 类继承问题)
【发布时间】:2020-04-01 14:46:36
【问题描述】:

我创建了几个框架,我想将它们全部打包到一个主框架中。因此,我可以将它们作为一个组并添加到 ttk.Notebook 的选项卡中。

但是,当我先将班级的主人设置为其他框架,然后将主人添加到 ttk.Notebook 时,选项卡总是无法显示我的小部件!但是如果我直接将我的框架添加到笔记本上,它就可以正常工作。

这是我的代码的 sn-p:

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 类作为其他 tk.Frame 的主人,它工作正常,所以我觉得我的类出了点问题。但是我说不出来! 谁能告诉我这里出了什么问题?

【问题讨论】:

    标签: python tkinter ttk


    【解决方案1】:

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

    【讨论】:

    • 感谢您的提醒。但是,现在 path_frame1 包含其他选项卡中的这些小部件!
    • 这是你需要的吗?
    • 我想是的。我将检查我原始代码中的所有 init 参数~
    猜你喜欢
    • 1970-01-01
    • 2011-05-06
    • 2021-05-29
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多