Creando aplicaciones modernas de escritorio en Python con CustomTkinter


Tkinter es una biblioteca de Python que permite crear interfaces gráficas de usuario (GUI, por sus siglas en inglés) de manera sencilla. Esta librería viene incluída en la instalación básica de Python y permite crear interfaces para Linux, Windows y Mac.

La interfaz con Tkinter si bien ofrece muchos controles y es bastante práctica la apariencia es muy básica y quizás no te facilite aplicar estilos modernos a tus aplicaciones. Por ejemplo este s un código para generar una ventana de login básica:

import tkinter as tk

def login():
    username = username_entry.get()
    password = password_entry.get()
    if username == "usuario" and password == "clave":
        message_label.config(text="¡Bienvenido!")
    else:
        message_label.config(text="Nombre de usuario o clave incorrectos")

# Crear ventana
root = tk.Tk()
root.title("Ventana de login")

# Crear campos de entrada
username_label = tk.Label(root, text="Usuario:")
username_label.pack()
username_entry = tk.Entry(root)
username_entry.pack()

password_label = tk.Label(root, text="Clave:")
password_label.pack()
password_entry = tk.Entry(root, show="*")
password_entry.pack()

# Crear botón de login
login_button = tk.Button(root, text="Ingresar", command=login)
login_button.pack()

# Crear etiqueta de mensaje
message_label = tk.Label(root, text="")
message_label.pack()

# Ejecutar ventana
root.mainloop()

Para darle una apariencia más moderna a las aplicaciones puedes utilizar CustomTkinter. Esta librería se puede instalar con este comando:
pip install customtkinter

Continuando con el ejemplo anterior, creamos una versión de una ventana de Login.

#Importamos librerías
import customtkinter
import tkinter

#Creamos la clase principal heredando de customtkinter
class App(customtkinter.CTk):
    def __init__(self):
        super().__init__()
        # Crear ventana
        self.title("App Login")
        self.minsize(400, 300)
         # Configurar grid
        self.grid_columnconfigure(1, weight=1)
        self.grid_columnconfigure((2, 3), weight=0)
        self.grid_rowconfigure((0, 1, 2), weight=1)

        # Crear frame para agrupar controles
        fmeLogin = customtkinter.CTkFrame(master=self, width=200, height=200)
        fmeLogin.grid(row=0, column=0,columnspan=3,pady=20,padx=20)
        
        # Crear campos de entrada
        lblUsuario = customtkinter.CTkLabel(master=fmeLogin, text="Usuario")
        lblUsuario.grid(row=1, column=0, padx=10,pady=10)
        username= customtkinter.CTkEntry(master=fmeLogin,
                               placeholder_text="Usuario",
                               border_width=2,                               
                               corner_radius=10)
        username.grid(row=1, column=2,padx=20)
        lblPassword = customtkinter.CTkLabel(master=fmeLogin, text="Password")
        lblPassword.grid(row=2, column=0, padx=20)
        username= customtkinter.CTkEntry(master=fmeLogin,
                               placeholder_text="Password",
                               border_width=2,
                               corner_radius=10)
        username.grid(row=2, column=2,padx=20)

        # Crear botón de login
        button = customtkinter.CTkButton(master=fmeLogin, command=self.button_callback,text="Ingresar")        
        button.grid(row=3, sticky="ew",pady=10,columnspan=3,padx=20)

    # Acción del botón
    def button_callback(self):
        print("button pressed")


if __name__ == "__main__":
    app = App()
    app.mainloop()


Además de que la apariencia de las aplicaciones son mucho más modernas también se le pueden poner temas oscuros
Espero que esta librería les sea de utilidad y que puedan usarla para que sus aplicaciones de escritorio en Python luzcan más profesionales y modernas.


Publicar un comentario

0 Comentarios