您可以一次打包多个 Tkinter 小部件而不是单独打包它们吗?

Mat*_*arz 4 python tkinter pack

您创建一个初始根窗口,然后创建多个小部件(例如标签、按钮、事件)。

你必须将它们中的每一个都打包,并且可以通过我所知道的几种方式来完成。

Button(root, text="Button1", command=something).pack()
Run Code Online (Sandbox Code Playgroud)

或者

btn1 = Button(root, text="Button1", command=something)
btn1.pack()
Run Code Online (Sandbox Code Playgroud)

是否可以一次性打包分配给“root”的多个小部件,而不使用 for 循环并显式命名项目,如下所示:

for item in [btn1, btn2, label1, label2]:
    item.pack()
Run Code Online (Sandbox Code Playgroud)

tob*_*s_k 7

您可以用来root.children获取添加到该父元素的所有按钮和标签,然后调用pack它们的函数。children是一个字典,将 ID 映射到实际元素。

root = Tk()

label1  = Label(root, text="label1")
button1 = Button(root, text="button1")
label2  = Label(root, text="label2")
button2 = Button(root, text="button2")

for c in sorted(root.children):
    root.children[c].pack()

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

这将使pack所有这些按钮和标签从上到下彼此位于彼此下方,其顺序与添加到父元素的顺序相同(由于sorted)。但请注意,此功能的用处相当有限,因为通常您不会将所有小部件放在一列中。