Python 3.x 如何将此按钮与其上方的其他列对齐?
因此,我正在学习Python中关于tkinter的教程,我们正在制作一个基本的计算器,但我似乎无法让我的equals按钮与其他按钮配合,它要么太长,要么太短,要么最终改变了它正上方按钮的大小。据我所知,网格系统之所以有效,是因为我所理解的按钮位置是相互关联的。有办法解决这个问题吗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
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次,差异也不会明显。