TKInter - 标签中的文本更改窗口的宽度

时间:2014-11-18 12:52:43

标签: python user-interface tkinter

我使用tkinter工具包在python中构建计算器。问题是当文本在计算器中输入(并添加到计算中的标签)时,窗口的整个宽度会变化并变得更长。我能做些什么来解决它?

以下是代码的一些重要部分:(主类继承自tk.Frame)

labelStyle = {"padx":10, "pady":10, "justify":"left"}
calculationsLabel = tk.Label(self, text="", **labelStyle)
calculationsLabel.grid(row=0, column=1, **gridStyle)
self.master.resizable(0,0)
self.pack(padx=5, pady=5)
self.calculationsLabel=calculationsLabel

for number in range(9,0,-1):
        ...
        tk.Button(self, ...).grid(...)

说明问题的图片:

the calculator without text the calculator with text

3 个答案:

答案 0 :(得分:3)

您需要做一些事情来防止标签更改窗口大小:

  1. 为标签指定宽度为1(一)。通过给标签一个宽度,你隐含地说#34;当文字更大时,它会变得更大"。通过给它一个明确的宽度,你会说"无论文本有多大,如果文字更大,都不会增长。
  2. 使用columnspan选项进行网格,以使标签所在的单元格跨越按钮网格的宽度。使用粘性选项,这样即使标签只请求一个宽度字符,网格也会强制它变宽以适应空间。

答案 1 :(得分:2)

您可以使用columnspan参数让标签覆盖所有列的顶部,而不是拉伸第一个列。添加到您的网格方法:

calculationsLabel.grid(row=0, column=1, columnspan=7 **gridStyle)

(用实际拥有的很多列代替7)

答案 2 :(得分:2)

您可以使用columnspan的{​​{1}}选项使标签跨越计算器的整个宽度。
然后,如果您希望数字位于左侧,请使用grid中的anchor=W

这样,只有当Label比完整窗口长时,窗口才会展开。您甚至可以使用Label Label选项来阻止这种情况。