Как я могу дополнить свой калькулятор на Python с помощью Tkinter? - PullRequest
0 голосов
/ 24 апреля 2019

Мне нужно сделать функцию калькулятора с условными выражениями на Python с Tkinter, у меня уже есть дизайн.

Я попытался сохранить первое число, которое числится в переменной, для последующего использования, затем я сохранил оператор в переменной anoter, но не знаю, как сохранить второе число.

Вот код функции:

    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 голосов
/ 24 апреля 2019

Существует немало улучшений, которые возможны, но это должно заставить вас двигаться.Он принимает только два значения и затем выводит строковое представление.Тем не менее, он не выполняет математическую часть.

Вы также можете сохранить введенные значения в списке, а затем выполнить понимание списка, когда кто-то нажмет «=» или «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}")
0 голосов
/ 24 апреля 2019

Более простым способом было бы использовать eval().
Взять всю строку ввода от пользователя, скажем 1+2.Возьмите value из любого виджета, который вы используете. Затем в вашей функции btnClick do:

def btnClick(value)  
    answer = eval(value)

Затем установите ответ для любого виджета, который вы используете.
eval() возвращает результат и принимает строковые данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...