我试图了解如何创建小部件。而且我发现上面三个函数被用于创建一个小部件,但我无法想出一个与另一个相比的区别和优势。尽管如此,我看过这个答案仍然让我感到困惑(而且它也没有说什么winfo_toplevel
)。
这是我的代码。
from tkinter import *
root = Tk()
root.title("Root widget")
root.mainloop()
window = Toplevel()
window.title("Window widget")
window.mainloop()
在运行上面的代码时,“Root”小部件正在被创建。在关闭“根”时,会创建两个小部件,其中一个名为“窗口小部件”,另一个是不需要的。在关闭不需要的小部件时,“窗口小部件”也会被破坏。这里实际发生了什么以及如何克服?
另一个样本:
class ldo(Frame):
def __init__(self, master = None):
Frame.__init__(self,master)
self.grid()
self.appOutline()
def appOutline(self):
top = self.winfo_toplevel()
self.menuBar = Menu(top)
top["menu"] = self.menuBar
self.subMenu1 = Menu(self.menuBar)
self.menuBar.add_cascade(label = "File", menu = self.subMenu1)
app = ldo()
app.master.title("Sample UI")
app.mainloop()
另一方面,这段代码使用winfo_toplevel()
了小部件看起来非常好的地方。在这里,我的假设是,Frame
扮演创建小部件的角色,并且winfo_toplevel()
是其他 tkinter 项目的增强工具。但想知道它实际上是做什么的。
但是,以下代码段不起作用:
winf = winfo_Toplevel()
winf.title("Winfo Widget")
winf.mainloop()
并返回这样的错误:
winf = winfo_Toplevel()
NameError: name 'winfo_Toplevel' is not defined
Tk()、Toplevel() 和 winfo_Toplevel() 之间的确切区别是什么。什么时候应该有效使用。寻找真正更好的理解。