Tkinter

Tkinter es un binding de la biblioteca gráfica Tcl/Tk para el lenguaje de programación Python. Se considera un estándar para la interfaz gráfica de usuario (GUI) para Python y es el que viene por defecto con la instalación para Microsoft Windows.

Hoy en día hay otras alternativas disponibles como wxPython, PySimpleGUI, PyQt o PySide y PyGTK que cumplen con todos los estándares de componente visual.

Ejemplo

Antiguas Versiones:

#!/usr/bin/env python2
from Tkinter import *                   # Importar el modulo

apl = Tk()                              # Crear la ventana raíz (base) 
texto = Label(apl, text="Hola Mundo!")  # Crear una etiqueta con texto
texto.pack()                            # Poner la etiqueta en la ventana
apl.mainloop()                          # Iniciar el bucle de eventos

Nuevas Versiones:

#!/usr/bin/env python3
from tkinter import *

apl = Tk()
texto = Label(apl, text="Hola Mundo!")
texto.pack()
apl.mainloop()

Para Python 2, la única diferencia es que la palabra tkinter se escribirá en minúscula en el comando de importación, se escribirá con mayúscula Tkinter en Python 3. Con el paso del tiempo se ha cambiado el código para invocar esta biblioteca y ciertos módulos de ella también.

Proceso

Hay cuatro etapas para crear un widget

Creación

Crearlo dentro de un marco

Configuración

Cambiar los atributos de los widgets

Empaquetar

Se empaca en su posición para que se haga visible

Bind

Se ata a una función o evento.[1]

A menudo se comprimen y el orden puede variar.

Aplicación simple

Usando el paradigma orientado a objetos en Python, un programa simple sería (requiere la versión 8.6 de Tcl, que no es usada por Python en MacOS por defecto):

#!/usr/bin/env python3
import tkinter as tk

class Application(tk.Frame):
    def __init__(self, master=None):
        tk.Frame.__init__(self, master)
        self.grid()
        self.createWidgets()
    
    def createWidgets(self):
        self.mondialLabel = tk.Label(self, text='Hola, Mundo!')
        self.mondialLabel.config(bg="#00ffff")
        self.mondialLabel.grid()
        self.quitButton = tk.Button(self, text='Quit', command=self.quit)
        self.quitButton.grid()

if __name__ == '__main__':
    app = Application()
    app.master.title('Aplicación de muestra')
    app.mainloop()
  • línea 1: Directiva Hashbang al ejecutable del programa, permitiendo la selección de un intérprete apropiado ejecutable, cuando se autoejecute.[2]
  • línea 2: Esta línea importa el módulo tkinter en el espacio de nombres de su programa, pero lo renombra como tk.
  • línea 4: La clase Application hereda de la clase Frame de Tkinter.
  • línea 5: Define la función que establece el Frame (Marco).
  • línea 6: Llama al constructor de la clase de padre, Frame.
  • línea 10: Definiendo los widgets.
  • línea 11: Crea una etiqueta, llamada mondialLabel con el texto "Hola Mundo".
  • línea 13: Coloca la etiqueta en la aplicación para que sea visible usando el método del administrador de la geometría de la cuadrícula.
  • línea 14: Crea un botón con la etiqueta "Salir".
  • línea 15: Coloca el botón en la aplicación. La cuadrícula, el lugar y el paquete son todos métodos para hacer visible el widget
  • línea 17: Se indica al intérprete que asigne al atributo __name__ el valor de main indicando que es el archivo principal.
  • línea 18: El programa principal comienza aquí instanciando la clase de aplicación.
  • línea 19: Esta llamada al método establece el título de la ventana como "Aplicación de muestra".
  • línea 20: Inicia el bucle principal de la aplicación, esperando eventos de ratón y teclado.

Véase también

Referencias

  1. «GUI Programming with Python: Events and Binds». www.python-course.eu. Consultado el 26 de mayo de 2020.
  2. «PEP 397 -- Python launcher for Windows». Python.org (en inglés). Consultado el 26 de mayo de 2020.

Enlaces externos (en inglés)

Enlaces externos (en español)

Este artículo ha sido escrito por Wikipedia. El texto está disponible bajo la licencia Creative Commons - Atribución - CompartirIgual. Pueden aplicarse cláusulas adicionales a los archivos multimedia.