2

我创建了一个 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小部件一个固定的大小,以便它的大小不会根据插入的 Lable 改变?

4

3 回答 3

5

这个问题对我来说一直很有趣。我发现修复它的一种方法是使用该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()

这样,标签被放置在窗口中而不会缩小标签框。

于 2013-08-03T21:54:58.290 回答
1

如果您使用将小部件粘贴到其单元格的所有四个侧面而不是一侧的粘性值,则当您将小标签小部件放入其中时,它不会缩小。

另一种选择是调用errorArea.grid_propagate(False),它告诉网格区域不要缩小或扩展以适应其内容。这通常会导致不受欢迎的调整大小行为,或者至少需要您做一些额外的工作才能获得正确的调整大小行为。

于 2013-08-03T22:58:46.567 回答
0

声明 Labelframe 后立即使用 grid 函数。

前任 :

String_l = ttk.Labelframe(pw, text='String',width=100, height=408).grid(column=1, row=0, padx=4, pady=4,rowspan=2)
于 2020-11-19T22:42:34.727 回答