python - 为什么按钮没有正确对齐?

标签 python tkinter pypy

所以,我一直在尝试使用Tkinter设计一个简单的计算器GUI。但我面临着这个奇怪的问题,我无法解决。这是我的代码,希望它看起来不乱。

from tkinter import *

root = Tk()

display = Entry(root,width=48,borderwidth=5)
display.grid(row=0,column=0,columnspan=3)

button_1 = Button(root, text="1",width=16,height=3)
button_2 = Button(root, text="2",width=16,height=3)
button_3 = Button(root, text="3",width=16,height=3)
button_4 = Button(root, text="4",width=16,height=3)
button_5 = Button(root, text="5",width=16,height=3)
button_6 = Button(root, text="6",width=16,height=3)
button_7 = Button(root, text="7",width=16,height=3)
button_8 = Button(root, text="8",width=16,height=3)
button_9 = Button(root, text="9",width=16,height=3)
button_0 = Button(root, text="0",width=16,height=3)

button_clear = Button(root, text="Clear",width=32,height=3)
button_plus = Button(root, text="+",width=16,height=3)
button_equal = Button(root, text="=",width=32,height=3)

button_1.grid(row=3,column=0)
button_2.grid(row=3,column=1)
button_3.grid(row=3,column=2)

button_4.grid(row=2,column=0)
button_5.grid(row=2,column=1)
button_6.grid(row=2,column=2)

button_7.grid(row=1,column=0)
button_8.grid(row=1,column=1)
button_9.grid(row=1,column=2)

button_0.grid(row=4,column=0)

button_clear.grid(row=4,column=1,columnspan=2)
button_plus.grid(row=5,column=0)
button_equal.grid(row=5,column=1,columnspan=2)

root.mainloop()

这是 GUI 的屏幕截图

第一个问题:为什么clearequal按钮没有与3对齐,69 按钮,只要看看按钮的右边距,它怎么没有正确对齐。

我已将按钮 3、6、9 的宽度设置为 16,而 clearequal 按钮的宽度仅为双 32,这些清晰且相同的按钮的 column-span2 列。

第二个问题:这是一个次要问题,因为它不会使 GUI 看起来难看。为什么顶部的条目小部件与其下面的数字按钮宽度不匹配,条目小部件的宽度设置为48三次各个按钮。

提前致谢!

最佳答案

问题在于该按钮实际上太小,无法占据 2 列,并且 tkinter不会自动拉伸(stretch)它们。您必须使用 sticky 手动配置拉伸(stretch)属性,因此它知道拉伸(stretch)的方向:button_clear.grid(row=4,column=1,columnspan=2, sticky='we') 。这是修复的完整代码:

from tkinter import *

root = Tk()

display = Entry(root,width=48,borderwidth=5)
display.grid(row=0,column=0,columnspan=3)

button_1 = Button(root, text="1",width=16,height=3)
button_2 = Button(root, text="2",width=16,height=3)
button_3 = Button(root, text="3",width=16,height=3)
button_4 = Button(root, text="4",width=16,height=3)
button_5 = Button(root, text="5",width=16,height=3)
button_6 = Button(root, text="6",width=16,height=3)
button_7 = Button(root, text="7",width=16,height=3)
button_8 = Button(root, text="8",width=16,height=3)
button_9 = Button(root, text="9",width=16,height=3)
button_0 = Button(root, text="0",width=16,height=3)

button_clear = Button(root, text="Clear",width=32,height=3)
button_plus = Button(root, text="+",width=16,height=3)
button_equal = Button(root, text="=",width=32,height=3)

button_1.grid(row=3,column=0)
button_2.grid(row=3,column=1)
button_3.grid(row=3,column=2)

button_4.grid(row=2,column=0)
button_5.grid(row=2,column=1)
button_6.grid(row=2,column=2)

button_7.grid(row=1,column=0)
button_8.grid(row=1,column=1)
button_9.grid(row=1,column=2)

button_0.grid(row=4,column=0)

button_clear.grid(row=4,column=1,columnspan=2, sticky='we')
button_plus.grid(row=5,column=0)
button_equal.grid(row=5,column=1,columnspan=2, sticky='we')

root.mainloop()

希望对您有帮助!

关于python - 为什么按钮没有正确对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61725959/

相关文章:

Python Mechanize,单击 <li> 链接?

python - 在 python 2.7 中打印阿拉伯语/波斯语字母

python - 当我在 tkinter 中使用条目时,我得到空字符串

python - 如何从命令中识别按钮?

python - 我如何在 numpy 中将这个三重循环向量化为二维数组?

python - 如何在 TkInter 中创建平铺布局/流布局?

python - 我在哪里可以了解更多关于 PyPy 的翻译功能?

python - 为什么使用 Python 生成器遍历二叉树比不使用慢得多?

python - PyPy 可以与 NLTK 一起使用吗?

python - 如何在 python 的断言语句中使用小于等于