可以一次性打包多个Tkinter控件吗,而不是单独打包?
你首先创建一个主窗口,然后再添加多个小部件,比如标签、按钮和事件。
你需要把每一个小部件放到窗口里,这里有几种我知道的方式可以做到。
Button(root, text="Button1", command=something).pack()
或者
btn1 = Button(root, text="Button1", command=something)
btn1.pack()
有没有办法一次性把多个小部件放到“主窗口”里,而不使用循环,也不需要明确地给每个小部件命名,比如这样:
for item in [btn1, btn2, label1, label2]:
item.pack()
1 个回答
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()
这样做会把所有的按钮和标签一个接一个地从上到下排列,顺序和你添加到父元素时的顺序是一样的(因为用了 sorted
)。不过要注意,这样做的用处其实不大,因为通常你不会把所有的控件都放在一列里。