Tkinter Frame 是用 super() 实例化的。为什么我不能让 Label 小部件成为它的子部件?
A Tkinter Frame is instantiated with super(). Why can I not make a Label widget its child?
这涉及 Python 和 Tkinter。
我希望标签小部件显示单词 "Meow"。
Label 小部件应该是 Tk window 中 Frame 的 子项。
这看起来很简单,但下面的代码不起作用 - 什么都没有出现:
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()
,那么 window 的内容就会出现。 (但这不是 'correct' 行为,因为我希望 Label 小部件是 Frame 小部件的直接子级,而不是 Tk 父级 window。)
据我了解,super().__init__()
应该实例化了一个框架。然后标签小部件应该能够通过 self
访问框架。事实并非如此。
我哪里出错了?
您没有 pack
您的 Options
小部件。尝试:
Options(self).pack()
此外,我会明确声明 Options
是 Gui
的子级,因此您应该将 gui_parent
传递给 Options
的 __init__
函数对象:
def __init__(self, gui_parent):
super().__init__(gui_parent)
tk.Label(self, text="Meow").pack()
这涉及 Python 和 Tkinter。
我希望标签小部件显示单词 "Meow"。
Label 小部件应该是 Tk window 中 Frame 的 子项。
这看起来很简单,但下面的代码不起作用 - 什么都没有出现:
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()
,那么 window 的内容就会出现。 (但这不是 'correct' 行为,因为我希望 Label 小部件是 Frame 小部件的直接子级,而不是 Tk 父级 window。)
据我了解,super().__init__()
应该实例化了一个框架。然后标签小部件应该能够通过 self
访问框架。事实并非如此。
我哪里出错了?
您没有 pack
您的 Options
小部件。尝试:
Options(self).pack()
此外,我会明确声明 Options
是 Gui
的子级,因此您应该将 gui_parent
传递给 Options
的 __init__
函数对象:
def __init__(self, gui_parent):
super().__init__(gui_parent)
tk.Label(self, text="Meow").pack()