[Python3-tkinter ejemplo de calculadora]

Iniciado por reconFito, 8 Marzo 2020, 16:38 PM

0 Miembros y 1 Visitante están viendo este tema.

reconFito



Hola a todos aquí les dejo una calculadora sin funcionalidad.
Espero les guste o puede que no


Código (python) [Seleccionar]

from tkinter import Tk
from tkinter import ttk
from math import floor


class App(ttk.Frame):
    def __init__(self, master):
        super().__init__(master)
        self.pack()
        # Variables
        self.screen = None
        # Metodos de clase
        self.style_widgets()
        self.create_widgets()

    # Estilos de los componentes del Frame
    def style_widgets(self):
        # estilos generales
        ttk.Style().configure("TEntry", foreground="#00000a9")
        ttk.Style().configure("TButton", width=10, padding=(
            15, 10), relief=ttk.tkinter.FLAT)
        ttk.Style().configure("E.TButton", background="#709234")
        ttk.Style().configure("OP.TButton", background="#cccccc")

    def create_widgets(self):
        self.screen = ttk.Entry(self)
        self.screen.config(justify=ttk.tkinter.RIGHT)
        self.screen.grid(row=1, column=1, ipady=20,
                         columnspan=4, sticky="NSWE")

        # Crear botones
        dic_buttons = {}  # diccionario de botones
        for i in range(1, 13):
            dic_buttons[f"btn{i}"] = ttk.Button(self, text=f"{i}")

        dic_buttons.update([("btnmul", ttk.Button(self, text="x")),
                            ("btndif", ttk.Button(self, text="-")),
                            ("btnplus", ttk.Button(self, text="+")),
                            ("btnmod", ttk.Button(self, text="/"))])

        dic_buttons["btn9"].grid(row=2, column=1)
        dic_buttons["btn8"].grid(row=2, column=2)
        dic_buttons["btn7"].grid(row=2, column=3)
        dic_buttons["btnmul"].grid(row=2, column=4)
        dic_buttons["btn6"].grid(row=3, column=1)
        dic_buttons["btn5"].grid(row=3, column=2)
        dic_buttons["btn4"].grid(row=3, column=3)
        dic_buttons["btndif"].grid(row=3, column=4)
        dic_buttons["btn3"].grid(row=4, column=1)
        dic_buttons["btn2"].grid(row=4, column=2)
        dic_buttons["btn1"].grid(row=4, column=3)
        dic_buttons["btnplus"].grid(row=4, column=4)
        dic_buttons["btn10"].grid(row=5, column=1)
        dic_buttons["btn11"].grid(row=5, column=2)
        dic_buttons["btn12"].grid(row=5, column=3)
        dic_buttons["btnmod"].grid(row=5, column=4)

        dic_buttons["btn10"].config(text=",")
        dic_buttons["btn11"].config(text="0")
        dic_buttons["btn12"].config(text="=", style="E.TButton")

        # print(dic_buttons.keys())
        dic_buttons["btnmul"].config(style="OP.TButton")
        dic_buttons["btndif"].config(style="OP.TButton")
        dic_buttons["btnplus"].config(style="OP.TButton")
        dic_buttons["btnmod"].config(style="OP.TButton")


if __name__ == "__main__":
    root = Tk()
    root.resizable(False, False)
    root.title("ttk Example")
    app = App(root)
    app.mainloop()


tincopasan

Hola:

CitarEspero les guste o puede que no
no me gusta. el orden de los números, lo más simple es que vayan de menor a mayor de izquierda a derecha y no al contrario. Más allá de la simplicidad y la falta de funcionalidad, le faltan los botones más básicos como el de poner todo a 0 y el de retroceder en caso de un mal tipeo.