import tkinter as tk

okno = tk.Tk()
okno.geometry("500x500+200+200")

def ukaz(tl):
    
    global byl_vypocet
    
    if byl_vypocet:
        vysledek_text.set("")
        byl_vypocet = False
    
    if tl == "C":
        #kod
        vysledek_text.set("")
    elif tl == "<-":
        #kod
        p = vysledek_text.get()
        vysledek_text.set(p[:-1])
    elif tl == "=":
        vypocet()
    else:
        #vyloučit opakování znaků +-*/
        znaky = ("+","-","*","/",".","")
        #vysledek_text.set(vysledek_text.get() + str(tl))
        if len(vysledek_text.get())>0:
            posledni_znak = vysledek_text.get()[-1]
        else:
            posledni_znak = ""

        if str(tl) in znaky and posledni_znak not in znaky:
            vysledek_text.set(vysledek_text.get() + str(tl))
        
        if str(tl) not in znaky or (posledni_znak == "" and str(tl) == "-"):
            vysledek_text.set(vysledek_text.get() + str(tl))
            

def vypocet():
    global byl_vypocet, pamet
    vysledek = eval(vysledek_text.get())
    #vysledek_text.set(vysledek_text.get() + " = " + str(vysledek))
    vysledek_text.set(vysledek)
    byl_vypocet = True
    pamet.append(vysledek)
    pamet_obsah.set(pamet)
    



tlacitka = [7,8,9,"+",4,5,6,"-",1,2,3,"/",0,".","=","*","C","<-"]
promenne = []
byl_vypocet = False
pamet = [] #append


radek = 1
sloupec = 0

vysledek_text = tk.StringVar()
vysledek = tk.Entry(okno, width = 40, textvariable=vysledek_text, font=("arial", 12), bg="red")
vysledek.grid(column = 0, row = 0, columnspan = 4)
vysledek.config(state=tk.DISABLED)

pamet_obsah = tk.StringVar()
pamet_obsah.set("prázdná pamět")
pamet_zobraz = tk.Label(okno, textvariable=pamet_obsah)
pamet_zobraz.grid(column = 5, row = 0)




for tl in tlacitka:
    tlacitko = tk.Button(okno, text=tl, height = 5, width = 10)
    tlacitko.grid(column=sloupec, row=radek, padx = 5, pady = 5)
    tlacitko.config(command = lambda t=tl: ukaz(t))
    if tl == "=":
        tlacitko.config(bg="red")
    sloupec = sloupec + 1
    if sloupec == 4:
        sloupec = 0
        radek = radek + 1

okno.mainloop()