# -*- encoding: utf-8 -*-

# Preprost kalkulator, ki računa osnovne operacije.

from tkinter import *

class Kalkulator():
    def __init__(self, master):
        # Naredimo spremenljivki, ki hranita vrednosti polj
        self.a = DoubleVar(master, value=0)
        self.b = DoubleVar(master, value=0)

        # Polje, ki prikazuje self.a
        polje_a = Entry(master, textvariable=self.a)
        polje_a.grid(row=0, column=0)

        # Dodamo številčnico za polje a
        stevilcnica = Frame(master)
        stevilcnica.grid(row=1, column=0)
        # Kje stojijo gumbki
        pozicijaGumba = [(3,1), # 0
                         (2,0), (2,1), (2,2), # 1, 2, 3
                         (1,0), (1,1), (1,2), # 4, 5, 6
                         (0,0), (0,1), (0,2)] # 7, 8, 9
        # V stevilcnico postavimo gumbke
        for k in range(10):
            gumb = Button(stevilcnica, text=str(k), command=self.stevka(k))
            (r,c) = pozicijaGumba[k]
            gumb.grid(row=r,column=c)
        
        # Polje, ki prikazuje self.b
        polje_b = Entry(master, textvariable=self.b)
        polje_b.grid(row=2, column=0)

        # Naredimo Frame, ki vsebuje gumbe
        gumbi = Frame(master)
        gumbi.grid(row=3, column=0)

        # Gumbi za operacije +, -, *, /
        # se niso narejeni
        gumbPlus = Button(gumbi, text="+", command=self.vsota)
        gumbPlus.grid(row=0, column=0)
        
        gumbKrat = Button(gumbi, text="⨉", command=self.zmnozek)
        gumbKrat.grid(row=0, column=1)
 
        # Napis, ki prikazuje rezultat
        self.c = DoubleVar(master, value=0)
        polje_c = Label(master, textvariable=self.c)
        polje_c.grid(row=4, column=0)

    def stevka(self, k):
        """V polje self.a doda števko k."""
        return (lambda: self.a.set(10 * self.a.get() + k))

    def vsota(self):
        try:
            self.c.set(self.a.get() + self.b.get())
        except ValueError:
            self.c.set("?")

    def zmnozek(self):
        try:
            self.c.set(self.a.get() * self.b.get())
        except ValueError:
            self.c.set("?")


# Glavnemu oknu rečemo "root" (koren), ker so grafični elementi
# organizirani v drevo, glavno okno pa je koren tega drevesa

# Naredimo glavno okno
root = Tk()

aplikacija = Kalkulator(root)

# Kontrolo prepustimo glavnemu oknu. Funkcija mainloop neha
# delovati, ko okno zapremo.
root.mainloop()
