如何在计算器屏幕中显示按钮文本

时间:2016-08-04 08:29:09

标签: python tkinter

我已经制作了一个简单的计算器,其中包含1,2,3等按钮。但是我无法将这些按钮文本(如1或2等)放到计算器屏幕上。 如果你们给我一些提示,那将是非常有帮助的。

from tkinter import *
root = Tk()
buttons = '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '+', '-'

def calc(value):
    res = num.get()
    res = res + " " + value
    res = str(eval(res))
    num.set(res)


num = StringVar()
rows = 1
col = 0

ent = Entry(root, textvariable = num, background = "#D0F3F5", border = 2, width = 50)
ent.bind('<FocusOut>')
ent.grid(row = 0 , column = 0, columnspan = 4, ipadx = 5, ipady = 5)

Button(root, text = '=', width = 45, command = calc).grid(column = 0, row = 5, columnspan = 4)

for button in buttons:
    button = Button(root,width = 10, text = button, command = lambda: calc(button))
    #button.bind('<Button-1>', lambda e: screen(button))
    button.grid(row = rows, column = col, sticky = "W E")
    button['relief']="groove"
    col = col + 1

    if col == 4:
        rows = rows + 1
        col = 0

    if rows > 6:
        break




root.mainloop()

1 个答案:

答案 0 :(得分:0)

这里有几个问题。

1)变量button用于两个不同的目的,使其中一个覆盖另一个目的。您需要重命名其中一个。

2)当using lambdas with parameters in for loops时,要获取该参数的当前值,您需要显式写入该值。

3)您没有将任何参数传递给等号按钮命令。

4)要进行计算,您需要检查按下的按钮是否为=。如果没有,你不应该尝试计算任何东西。

将所有这些应用到您的代码中会产生:

def calc(value):
    res = num.get()
    res = res + value

    if value == "=": 
        res = str(eval(res[:-1])) #to exclude equal sign itself

    num.set(res)

#equal sign button
Button(root, text = '=', width = 45, command = lambda: calc("=")).grid(...)

#for loop and renaming a variable
for x in buttons:
    button = Button(root,width = 10, text = x, command = lambda x=x: calc(x))