所以,我一直在尝试使用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()
第一个问题
:为什么clear
和equal
按钮没有与3
对齐,6
、9
按钮,只要看看按钮的右边距
,它怎么没有正确对齐。
我已将按钮 3、6、9 的宽度设置为 16
,而 clear
和 equal
按钮的宽度仅为双 32
,这些清晰且相同的按钮的 column-span
为 2
列。
第二个问题
:这是一个次要问题,因为它不会使 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/