Python 如何防止插入空标签时Tkinter labelframe大小发生变化

Python 如何防止插入空标签时Tkinter labelframe大小发生变化,python,widget,tkinter,size,Python,Widget,Tkinter,Size,我创建了一个LabelFrame小部件。它一开始有一个很好的尺寸: import Tkinter form = Tkinter.Tk() errorArea = Tkinter.LabelFrame(form, text=" Errors ", width=250, height=80) errorArea.grid(row=2, column=0, columnspan=2, sticky="E", \ padx=5, pad

我创建了一个LabelFrame小部件。它一开始有一个很好的尺寸:

import Tkinter
form = Tkinter.Tk()

errorArea = Tkinter.LabelFrame(form, text=" Errors ", width=250, height=80)
errorArea.grid(row=2, column=0, columnspan=2, sticky="E", \
             padx=5, pady=0, ipadx=0, ipady=0)

但当我在其中插入一个空字符串时,
errorArea
小部件的大小会根据插入的字符串进行调整:

errorMessage = Tkinter.Label(errorArea, text="")
errorMessage.grid(row=0, column=0, padx=5, pady=2, sticky='W')


我如何给
errorArea
小部件一个固定的大小,这样它的大小就不会根据插入的标签而改变?

这个问题一直是我感兴趣的。我发现解决这个问题的一种方法是使用
place
方法,而不是
grid

import Tkinter

form = Tkinter.Tk()

errorArea = Tkinter.LabelFrame(form, text=" Errors ", width=250, height=80)
errorArea.grid(row=2, column=0, columnspan=2, sticky="E", \
             padx=5, pady=0, ipadx=0, ipady=0)

errorMessage = Tkinter.Label(errorArea, text="")

# 1) 'x' and 'y' are the x and y coordinates inside 'errorArea'
# 2) 'place' uses 'anchor' instead of 'sticky'
# 3) There is no need for 'padx' and 'pady' with 'place'
# since you can specify the exact coordinates
errorMessage.place(x=10, y=10, anchor="w")

form.mainloop()

这样,标签就可以放置在窗口中,而不会收缩labelframe。

如果使用粘滞值将小部件粘在单元格的四个面上,而不是只粘在一面上,那么当你将小标签小部件放入其中时,小标签小部件就不会收缩


另一个选项是调用
errorArea.grid\u propagate(False)
,它告诉网格区域不要收缩或扩展以适应其内容。这通常会导致不希望的调整大小行为,或者至少需要您做一些额外的工作来获得正确的调整大小行为

声明Labelframe后立即使用grid函数

例:


@投反对票的人:你能说说你投反对票的原因吗?我非常关心我工作的质量。因此,如果你发现我的代码有问题,请告诉我它是什么,这样我就可以修复我的帖子或更好地解释我所做的事情。它不起作用,当我在errorArea中使用“WENS”时,它会弄乱表单的结构。如果你能向我们展示更多的代码,我们可能会修复布局问题。
String_l = ttk.Labelframe(pw, text='String',width=100, height=408).grid(column=1, row=0, padx=4, pady=4,rowspan=2)