PYTHON:如何使用tkinter将两个标签锚定到顶部

PYTHON:如何使用tkinter将两个标签锚定到顶部,python,user-interface,tkinter,Python,User Interface,Tkinter,对于上面的代码,我试图将这两个标签锚定到顶部,并直接锚定到另一个标签的下方。尽管第一个标签(黄色标题)固定在顶部,但当第二个标签(黄色标题2)展开时,会向中心移动。我怎样才能解决这个问题 提前谢谢你 不要使用expand=1。发件人: 展开选项告诉管理员为小部件框分配额外的空间。如果父窗口小部件的大小大于容纳所有打包窗口小部件所需的大小,则任何超出的空间都将分布在所有窗口小部件中,这些窗口小部件的展开选项设置为非零值 使用expand=1,当窗口变大时,空间分布在两个标签之间。因此,即使你只告诉

对于上面的代码,我试图将这两个标签锚定到顶部,并直接锚定到另一个标签的下方。尽管第一个标签(黄色标题)固定在顶部,但当第二个标签(黄色标题2)展开时,会向中心移动。我怎样才能解决这个问题


提前谢谢你

不要使用
expand=1
。发件人:

展开选项告诉管理员为小部件框分配额外的空间。如果父窗口小部件的大小大于容纳所有打包窗口小部件所需的大小,则任何超出的空间都将分布在所有窗口小部件中,这些窗口小部件的展开选项设置为非零值

使用
expand=1
,当窗口变大时,空间分布在两个标签之间。因此,即使你只告诉他们在X方向上填充,他们在两个方向上都有空间。第二个标签直接放置在第一个标签可用的空间下方,该空间是窗口的一半

我试图解释并形象化
expand
fill
之间的区别


另外,您也不需要
anchor=tk.N
。当小部件的可用空间和小部件的大小相同时,锚定选项没有区别。另外,
side=tk.TOP
是默认值,因此您也可以决定忽略它,只剩下
fill=tk.X

查看我看到的文档:

文本小部件用于以多行显示文本

这似乎是可行的:

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()
这可能有点特定于操作系统,正确的方法可能是:

import tkinter as tk

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

yellow_header = tk.Label(root, text = 'Header\nParagraph', bg = 'light yellow')
yellow_header.pack(side = tk.TOP, anchor = tk.N, expand = 1, fill = tk.X)
当增加第一个字符串的长度时,第二个字符串仍保留在中心

import os
...
yellow_header = tk.Label(root, text = 'Header' + os.linesep + 'Paragraph', bg = 'light yellow')