import tkinter as tk

root = tk.Tk()
root.title("window")

yellow_header = tk.Label(root, text = 'Header', bg = 'light yellow')
yellow_header.pack(side = tk.TOP, anchor = tk.N, expand = 1, fill = tk.X)

yellow_header2 = tk.Label(root, text = 'paragraph', bg = 'light yellow')
yellow_header2.pack(side = tk.TOP, anchor = tk.N, expand = 1, fill = tk.X)

root.mainloop()

对于上面的代码,我试图将这两个标签都锚定在顶部和正下方。尽管第一个标签(黄色的_头)固定在顶部,但当第二个标签(黄色的_头2)展开时会移向中心。我该怎么解决?
提前谢谢你!

最佳答案

不要使用expand=1。从effbot
expand选项告诉管理器为小部件框分配额外的空间。如果父窗口小部件的大小超过了容纳所有打包窗口小部件所需的大小,则任何超出的空间都将分布在所有将expand选项设置为非零值的窗口小部件中。
使用expand=1时,当窗口变大时,空间将分布在两个标签之间。所以即使你只告诉他们在X方向填充,他们在两个方向都有空间。第二个标签直接放在第一个标签可用的空间(即窗口的一半)下。
我试图解释和想象this answerexpandfill之间的区别。
另外,你也不需要anchor=tk.N。当小部件的可用空间和大小相同时,锚定选项没有区别。另外,side=tk.TOP是默认值,因此您也可以决定省略它,只留下fill=tk.X

10-08 03:12