Tkinter帧用super()实例化。为什么我不能将Label小部件作为其子元素?

时间:2017-06-06 16:16:02

标签: python tkinter tk

这涉及到Python和Tkinter。

  1. 我希望Label小部件显示单词" Meow"。

  2. Label小部件应该是Tk窗口中Frame 子级。

  3. 这看起来很简单,但下面的代码不起作用 - 没有任何内容出现:

    import tkinter as tk
    
    class Options(tk.Frame):
    
        def __init__(self, gui_parent):
    
            super().__init__()
            tk.Label(self, text="Meow").pack()
    
    class Gui(tk.Tk):
    
        def __init__(self):
    
            super().__init__()
            Options(self)
    
    gui = Gui()
    gui.mainloop()
    

    然后我进行了实验:如果我将Label小部件更改为tk.Label(gui_parent, text="Meow").pack(),则会显示该窗口的内容。 (但这不是正确的行为,因为我希望Label小部件成为Frame小部件的直接子节点,而不是Tk父窗口的直接子节点。)

    据我了解,super().__init__()应该实例化一个Frame。然后,Label小部件应该能够通过self访问Frame。事实并非如此。

    我哪里出错?

1 个答案:

答案 0 :(得分:2)

您没有pack您的Options小部件。试试:

Options(self).pack()

另外,我会明确声明OptionsGui的孩子,因此您应该将gui_parent传递给__init__Options对象的def __init__(self, gui_parent): super().__init__(gui_parent) tk.Label(self, text="Meow").pack() 函数:

ionic share