我使用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(...)
说明问题的图片:
答案 0 :(得分:3)
您需要做一些事情来防止标签更改窗口大小:
columnspan
选项进行网格,以使标签所在的单元格跨越按钮网格的宽度。使用粘性选项,这样即使标签只请求一个宽度字符,网格也会强制它变宽以适应空间。答案 1 :(得分:2)
您可以使用columnspan
参数让标签覆盖所有列的顶部,而不是拉伸第一个列。添加到您的网格方法:
calculationsLabel.grid(row=0, column=1, columnspan=7 **gridStyle)
(用实际拥有的很多列代替7)
答案 2 :(得分:2)
您可以使用columnspan
的{{1}}选项使标签跨越计算器的整个宽度。
然后,如果您希望数字位于左侧,请使用grid
中的anchor=W
。
这样,只有当Label
比完整窗口长时,窗口才会展开。您甚至可以使用Label
Label
选项来阻止这种情况。