如何使用Tkinter在Python中完成计算器?

时间:2019-04-24 01:49:05

标签: python python-3.x user-interface tkinter

我必须使用Tkinter在Python中使用条件语句创建一个计算器函数,我已经有了设计。

我尝试保存数字中的第一个数字以备后用,然后将运算符保存在另一个变量中,但是我不知道如何保存第二个数字。

以下是该函数的代码:

    def btnClick(value):
        global val
        if value != "+" and value != "*" and value != "/" and value != "-" and value!= 
    "=" and value != "CE":
            val = val + str(value)
            box.set(val)
        else:
            op=val #op saves the operator in a variable
            val = val + str(value)
            n1= val[:-1]#saves the number minus the operator
            val = ""
            box.set(" ")
            val = val + str(value)
            n2= val

发生的是第二个值未保存在n2中,而是保存在n1中。

2 个答案:

答案 0 :(得分:0)

一种更简单的方法是使用eval()
取用户说的整个输入字符串1+2。从您正在使用的任何小部件中获取此value。然后在函数btnClick中执行:

def btnClick(value)  
    answer = eval(value)

然后将答案设置为您正在使用的任何小部件。
eval()返回结果并接受字符串输入。

答案 1 :(得分:0)

有很多可以改进的地方,但这应该会让您感动。它仅接受两个值,然后打印出字符串表示形式。不过,它并没有做真正的数学部分。

您还可以将输入的值存储在列表中,然后在有人按下“ =”或“ CE”时进行列表理解。

def btnClick(value):
    global val1 = None
    global val2 = None
    if value not in [ "+", "*", "/", "-",  
"=", "CE"] :
        if val1 is None:
            val1 = value
        else:
            val2 = value
        valor = valor + str(value)
        box.set(valor)
    else:
        result = None
        if value == "+":
            result = val1 + val2
        elif value == "*":
            result = val1 * val2
        elif value == "/":
            result = val1 / val2
        elif value == "-":
            result = val1 - val2
        else:
            box.set("enter a valid operator")
        if result is not None:
            box.set(f"{value1} {value} {value2} = {result}")