Python proporciona muchas opciones para desarrollar GUI como Kivy, PyQT, WxPython y muchos otros. Tkinter es el que se envía incorporado con python, lo que lo convierte en el más utilizado de todos. Tkinter es fácil, rápido y poderoso.
Los principiantes pueden aprender fácilmente a crear una calculadora simple usando este artículo: Python | Calculadora GUI simple usando Tkinter
La calculadora simple creada agregando manualmente cada botón y creando diferentes funciones para cada botón único es una tarea tediosa. No es la mejor práctica. Aquí veremos un programa de calculadora dinámica que se puede escalar fácilmente. Vamos a crear una calculadora GUI simple y fácil que pueda realizar operaciones matemáticas básicas como multiplicación, división, raíz cuadrada, suma y resta, incluso se pueden agregar más operaciones y, de acuerdo con esto, se pueden realizar cambios en la función.
Enfoque paso a paso:
- Creando la ventana principal
- Crear un contenedor que contenga todas las claves utilizadas en la calculadora (lista aquí)
- Creando un contenedor para todos nuestros botones creados
- Crear botones y agregarlos al contenedor de botones
- Definición de la función a llamar cuando se presiona un botón
- Ejecutando el bucle principal
A continuación se muestra la implementación del enfoque anterior:
Python3
# Import required modules from tkinter import * import tkinter.font as font # Creating the main window root = Tk() # Assigning it the desired geometry root.geometry("380x400") # Assigning the name of our window root.title("Calculator") # Assigning it the capability to # be resizable (It is default) root.resizable(0, 0) # Creating a StringVar to take # the text entered in the Entry widget inp = StringVar() myFont = font.Font(size=15) # Creating an Entry widget to get the # mathematical expression # And also to display the results screen = Entry(root, text=inp, width=30, justify='right', font=(10), bd=4) # We will use a grid like structure screen.grid(row=0, columnspan=4, padx=15, pady=15, ipady=5) # Key matrix contains all the required the keys key_matrix = [["c", u"\u221A", "/", "<-"], ["7", "8", "9", "*"], ["4", "5", "6", "-"], ["1", "2", "3", "+"], ["!", 0, ".", "="]] # Creating a dictionary for the buttons btn_dict = {} # Variable to store our results ans_to_print = 0 # Defining the function for calculation def Calculate(event): # getting the name of the button clicked button = event.widget.cget("text") # Referring the global values global key_matrix, inp, ans_to_print try: # Event containing a sqrt operation if button == u"\u221A": ans = float(inp.get())**(0.5) ans_to_print = str(ans) inp.set(str(ans)) elif button == "c": # Clear Button inp.set("") elif button == "!": # Factorial def fact(n): return 1 if n == 0 else n*fact(n-1) inp.set(str(fact(int(inp.get())))) elif button == "<-": # Backspace inp.set(inp.get()[:len(inp.get())-1]) elif button == "=": # Showing The Results # Calculating the mathematical exp. using eval ans_to_print = str(eval(inp.get())) inp.set(ans_to_print) # You may add many more operations else: # Displaying the digit pressed on screen inp.set(inp.get()+str(button)) except: # In case invalid syntax given in expression inp.set("Wrong Operation") # Creating the buttons using for loop # Number of rows containing buttons for i in range(len(key_matrix)): # Number of columns for j in range(len(key_matrix[i])): # Creating and Adding the buttons to dictionary btn_dict["btn_"+str(key_matrix[i][j])] = Button( root, bd=1, text=str(key_matrix[i][j]), font=myFont) # Positioning buttons btn_dict["btn_"+str(key_matrix[i][j])].grid( row=i+1, column=j, padx=5, pady=5, ipadx=5, ipady=5) # Assigning an action to the buttons btn_dict["btn_"+str(key_matrix[i][j])].bind('<Button-1>', Calculate) # Running the main loop root.mainloop()
Producción:
Publicación traducida automáticamente
Artículo escrito por marvinraval99 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA