小编cs2*_*612的帖子

Tk(),Toplevel()和winfo_toplevel()。它们之间的区别以及如何以及何时有效使用?

我试图了解如何创建小部件。而且我发现以上三个函数正在用于创建窗口小部件,但是我无法提出一个窗口与另一个窗口的区别和优势。即使,我看了一下这个答案,仍然让我感到困惑(它也没说什么winfo_toplevel)。

这是我的代码。

from tkinter import *

root = Tk()
root.title("Root widget")
root.mainloop()

window = Toplevel()
window.title("Window widget")
window.mainloop()
Run Code Online (Sandbox Code Playgroud)

在上面的代码上运行时,将创建“ 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()
Run Code Online (Sandbox Code Playgroud)

另一方面,此代码使用的winfo_toplevel()是小部件看起来很好的地方。在这里,我的假设是,它Frame起着创建小部件的作用,并且winfo_toplevel()是其他tkinter项目的增强工具。但是想知道它实际上在做什么。

但是,以下代码段不起作用:

winf = winfo_Toplevel()
winf.title("Winfo Widget")
winf.mainloop()
Run Code Online (Sandbox Code Playgroud)

并返回这样的错误:

winf = winfo_Toplevel()
NameError: …
Run Code Online (Sandbox Code Playgroud)

python tkinter widget python-3.x toplevel

5
推荐指数
1
解决办法
5605
查看次数

标签 统计

python ×1

python-3.x ×1

tkinter ×1

toplevel ×1

widget ×1