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

时间:2014-08-15 14:58:02

标签: python tkinter pack

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

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

Button(root, text="Button1", command=something).pack()

btn1 = Button(root, text="Button1", command=something)
btn1.pack()

是否可以打包分配给" root"的多个小部件?一举没有使用for循环和明确命名项,如下所示:

for item in [btn1, btn2, label1, label2]:
    item.pack()

1 个答案:

答案 0 :(得分:3)

您可以使用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()

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