在 tkinter 网格中创建输入框

Create entry box in tkinter grid

我想用 Tkinter 做一个计算器。到目前为止,我已经制作了一个带有数字的按钮网格。我如何在顶部创建一个输入框,但它位于网格中间,因此创建一行只有一个输入框?

from tkinter import * 
root = Tk()
root.rowconfigure(0, weight=1)
root.columnconfigure(0, weight=1)
button_text = list('1234567890.=')
a = 0
for row_index in range(4):
    Grid.rowconfigure(root, row_index, weight=1)
    for col_index in range(3):
        b = button_text[a]
        Grid.columnconfigure(root, col_index, weight=1)
        btn = Button(root, text = b)
        btn.grid(row=row_index, column=col_index, sticky=N+S+E+W)
        a += 1

您可以使用 grid(..., columnwidth=3) 作为 Entry 框。要向文本添加内容,请使用 StringVar 并向按钮添加 command。请注意,回调中的变量是在调用回调函数时计算的,而不是在定义时计算的,因此 lambda.

中的 c=char
from tkinter import * 
root = Tk()

var = StringVar()
text = Entry(root, text=var)
text.grid(columnspan=3)

for i, char in enumerate('1234567890.='):
    btn = Button(root, text=char, command=lambda c=char: var.set(var.get()+c))
    btn.grid(row=1+i//3, column=i%3, sticky=N+S+E+W)
    
root.mainloop()

当然,对于实际的计算器,回调会更复杂,运算符有特殊情况,应该委托给适当的函数 def