Python 3.x 如何将此按钮与其上方的其他列对齐?

Python 3.x 如何将此按钮与其上方的其他列对齐?,python-3.x,tkinter,Python 3.x,Tkinter,因此,我正在学习Python中关于tkinter的教程,我们正在制作一个基本的计算器,但我似乎无法让我的equals按钮与其他按钮配合,它要么太长,要么太短,要么最终改变了它正上方按钮的大小。据我所知,网格系统之所以有效,是因为我所理解的按钮位置是相互关联的。有办法解决这个问题吗 from tkinter import * root = Tk() root.title("Simple Calculator") e = Entry(root, width=35, bg='w

因此,我正在学习Python中关于tkinter的教程,我们正在制作一个基本的计算器,但我似乎无法让我的equals按钮与其他按钮配合,它要么太长,要么太短,要么最终改变了它正上方按钮的大小。据我所知,网格系统之所以有效,是因为我所理解的按钮位置是相互关联的。有办法解决这个问题吗

from tkinter import *

root = Tk()
root.title("Simple Calculator")

e = Entry(root, width=35, bg='white', fg='red', borderwidth=5)
# padx, pady add "padding" or space around the entry widget.
e.grid(row=0, column=0, columnspan=3, padx=10, pady=10)
# Button functions

def button_add():
    return

# Define the buttons
button_1 = Button(root, text='1', padx= 40, pady=20, command=button_add)
button_2 = Button(root, text='2', padx= 40, pady=20, command=button_add)
button_3 = Button(root, text='3', padx= 40, pady=20, command=button_add)
button_4 = Button(root, text='4', padx= 40, pady=20, command=button_add)
button_5 = Button(root, text='5', padx= 40, pady=20, command=button_add)
button_6 = Button(root, text='6', padx= 40, pady=20, command=button_add)
button_7 = Button(root, text='7', padx= 40, pady=20, command=button_add)
button_8 = Button(root, text='8', padx= 40, pady=20, command=button_add)
button_9 = Button(root, text='9', padx= 40, pady=20, command=button_add)
button_0 = Button(root, text='0', padx= 40, pady=20, command=button_add)
button_add = Button(root, text='+', padx= 39, pady= 20, command=button_add)
button_clear = Button(root, text='Clear', padx= 77, pady= 20, command=button_add)
button_equal = Button(root, text='=', padx= 87, pady= 20, command=button_add)

# Display the buttons on the screen.
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_add.grid(row=5, column=0)
button_equal.grid(row=5, column=1, columnspan=2)



root.mainloop()

与您的问题无关,但可以使用
button\u 1=button(…,command=button\u add)代替
button\u 1=button(…,command=lambda:button\u add(1))
。这将把
1
传递到
按钮\u add
,这样它就知道按下了哪个按钮。尝试将
sticky='nsew'
作为关键字参数添加到所有网格调用中(就像
column=1
或类似),也可能是这个问题在以后的教程中得到了解决,如果教程盲目地要求您遵循这一点,那么你应该质疑它的可信度。好的,
padx
pady
以像素为单位。像素与屏幕相对。教程中显示的这些像素适用于教程的分辨率,但不适用于您的分辨率。调整
padx
pady
应该可以解决这个问题。@matiss你的第一个建议很糟糕,可能会给你带来很多麻烦。看看有太多人使用您的方法,但他们没有完全理解您松开了变量的句柄,并试图对其调用函数。我甚至认为这样做是不好的。此外,您的建议将使代码运行更快,但即使您运行代码1000次,差异也不会明显。