Всем привет. помогите пожалуйста. реализовал калькулятор, но у меня почему-то если действие вычитание, то ответ получется с минусом. Например 5 - 3 = -8, как исправить?
подскажите, как реализовать, чтобы с плавающей запятой числа тоже получались? и ещё, отчего-то иногда ответ совсем не тот, который нужен, где ошибки? помогите
import math
from tkinter import *
current = 0
temp = ''
last ='None'
def knopka1():
global temp
temp += '1' #это нужно для того, чтобы к одной цифре добавлялась другая
vvod.configure(text=temp)
def knopka2():
global temp
temp += '2'
vvod.configure(text=temp)
def knopka3():
global temp
temp += '3'
vvod.configure(text=temp)
def knopka4():
global temp
temp += '4'
vvod.configure(text=temp)
def knopka5():
global temp
temp += '5'
vvod.configure(text=temp)
def knopka6():
global temp
temp += '6'
vvod.configure(text=temp)
def knopka7():
global temp
temp += '7'
vvod.configure(text=temp)
def knopka8():
global temp
temp += '8'
vvod.configure(text=temp)
def knopka9():
global temp
temp += '9'
vvod.configure(text=temp)
def knopka0():
global temp
temp += '0'
vvod.configure(text=temp)
#Функции для кнопок действий
def knopkaplus():
global temp
global current
global last
current=current+int(temp)
temp=''
vvod.configure(text='')
last='Plus'
def knopkaminus():
global temp
global current
global last
current=current-int(temp)
temp=''
vvod.configure(text='')
last='Minus'
def knopkaumnozhit():
global temp
global current
global last
current=current*int(temp)
temp=''
vvod.configure(text='')
last='Umnozh'
def knopkadelit():
global temp
global current
global last
current=current/int(temp)
temp=''
vvod.configure(text='')
last='Delenie'
def knopkaravno():
global last
global current
global temp
if last == 'Plus':
current=current+int(temp)
elif last == 'Minus':
current=current-int(temp)
elif last == 'Umnozh':
current=current*int(temp)
elif last == 'Delenie':
current=current/int(temp)
vvod.configure(text=str(current))
def knopkaclear():
global temp
global current
temp=''
current=0
vvod.configure(text='')
##############
root=Tk()
okno=Frame(root)
okno.pack()
root.title("Калькулятор")
num=StringVar()
main=Frame(root)
main.pack()
vvod=Label(okno,text='')
vvod.pack()
knopki=Frame()
kn1=Button(knopki,
text='1',
padx=15,
pady=15,
command=knopka1)
kn1.grid(row=0,column=0)
kn2=Button(knopki,
text='2',
padx=15,
pady=15,
command=knopka2)
kn2.grid(row=0,column=1)
kn3=Button(knopki,
text='3',
padx=15,
pady=15,
command=knopka3)
kn3.grid(row=0,column=2)
kn4=Button(knopki,
text='4',
padx=15,
pady=15,
command=knopka4)
kn4.grid(row=1,column=0)
kn5=Button(knopki,
text='5',
padx=15,
pady=15,
command=knopka5)
kn5.grid(row=1,column=1)
kn6=Button(knopki,
text='6',
padx=15,
pady=15,
command=knopka6)
kn6.grid(row=1,column=2)
kn7=Button(knopki,
text='7',
padx=15,
pady=15,
command=knopka7)
kn7.grid(row=2,column=0)
kn8=Button(knopki,
text='8',
padx=15,
pady=15,
command=knopka8)
kn8.grid(row=2,column=1)
kn9=Button(knopki,
text='9',
padx=15,
pady=15,
command=knopka9)
kn9.grid(row=2,column=2)
kn0=Button(knopki,
text='0',
padx=15,
pady=15,
command=knopka0)
kn0.grid(row=3,column=1)
knopki.pack()
#Создание кнопок-функций +,-,*,/
plus=Button(knopki, text='+',command=knopkaplus)
plus.grid(row=0,column=4)
minus=Button(knopki, text='-',command=knopkaminus)
minus.grid(row=1,column=4)
umnozh=Button(knopki, text='*',command=knopkaumnozhit)
umnozh.grid(row=2,column=4)
delenie=Button(knopki, text='/',command=knopkadelit)
delenie.grid(row=3,column=4)
ravno=Button(knopki, text='=',command=knopkaravno)
ravno.grid(row=4,column=3)
clr=Button(knopki, text='C',command=knopkaclear)
clr.grid(row=4,column=2)
root.mainloop()