ttk Notebook не может отображать виджеты в настроенном кадре в других кадрах (проблема наследования класса tkinter) - PullRequest
0 голосов
/ 01 апреля 2020

Я создал несколько кадров, и я хочу упаковать их все в основной кадр. Таким образом, я могу сделать их как группу и добавить на вкладку в ttk.Notebook.

Однако, когда я сначала устанавливаю мастер своего класса как другие кадры, затем добавляю мастер в ttk.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 по умолчанию в качестве мастера другого tk.Frame, поэтому я чувствую, что в моем классе что-то идет не так. Но я не могу сказать это! Может кто-нибудь сказать мне, что здесь происходит не так?

1 Ответ

1 голос
/ 01 апреля 2020

Вы забыли поставить здесь скобки path_frame2.pack(). Также должно быть tk.Frame.__init__(self, parent, *args, **kwargs). Вы забыли положить туда parent. Надеюсь, что это полезно!

...