Tkinter es una interfaz para el kit de herramientas GUI Tk de Python . Es la interfaz estándar de Python para el kit de herramientas GUI Tk, [ 1 ] y es la interfaz gráfica de usuario estándar de facto de Python . [ 2 ] Tkinter se incluye en las instalaciones estándar de Python para Linux , Microsoft Windows y macOS .
El nombre Tkinter proviene de Tk interface . Tkinter fue escrito por Steen Lumholt y Guido van Rossum , [ 3 ] y posteriormente revisado por Fredrik Lundh. [ 4 ]
Tkinter es un software libre publicado bajo una licencia de Python . [ 5 ]
Descripción
Al igual que la mayoría de las demás bibliotecas modernas de Tk, Tkinter se implementa como una envoltura de Python alrededor de un intérprete Tcl completo integrado en el intérprete de Python . Las llamadas a Tkinter se traducen en comandos Tcl, que se pasan a este intérprete integrado, lo que permite combinar Python y Tcl en una misma aplicación. La versión oficial de Python utiliza Tcl/Tk 8.6 (en lugar de la versión más reciente, la 9.0). [ 6 ]
Existen varias alternativas populares de bibliotecas GUI, como Kivy , Pygame , Pyglet , PyGObject , PyQt , PySide y wxPython .
Definiciones
from tkinter import *def calcular ( ) : precio = float ( precio_entrada.get ( )) cantidad = float ( cantidad_entrada.get ()) total = precio * cantidad label_resultado.config ( texto = " Total: " + str ( total ) )app = Tk () app . title ( "Aplicación de factorización" )Label ( app , text = "Prix" ) . pack () entry_price = Entry ( app ) entry_price . pack ()Label ( app , text = "Cantidad" ) . pack () entry_qty = Entry ( app ) entry_qty . pack ()Botón ( aplicación , texto = "Calculadora" , comando = calcular ) . pack ()label_result = Label ( app , text = "" ) label_result . pack ()aplicación.bucle principal ( )Widget
El término genérico para cualquiera de los componentes básicos que conforman una aplicación en una interfaz gráfica de usuario.
- Widgets principales:
- Contenedores:
- marco
- marco de etiqueta
- nivel superior
- ventana con cristales.
- Botones:
- botón
- botón de opción
- botón de verificación (casilla de verificación)
- botón de menú.
- Widgets de texto:
- etiqueta,
- mensaje
- texto
- Widgets de entrada:
- escala
- barra de desplazamiento
- cuadro de lista
- deslizador
- caja giratoria
- entrada (línea única)
- menú de opciones
- texto (varias líneas)
- Lienzo (gráficos vectoriales y de píxeles)
- Contenedores:
Tkinter proporciona tres módulos que permiten mostrar cuadros de diálogo emergentes: tk.messagebox (cuadros de diálogo de confirmación, información, advertencia y error), tk.filedialog (cuadros de diálogo de selección de un solo archivo, varios archivos y directorios) y tk.colorchooser (selector de color).
Python 2.7 y Python 3.1 incorporan la funcionalidad "themed Tk" ("ttk") de Tk 8.5. [ 7 ] [ 8 ] Esto permite que los widgets de Tk se personalicen fácilmente para que se parezcan al entorno de escritorio nativo en el que se ejecuta la aplicación, abordando así una crítica de larga data a Tk (y por lo tanto a Tkinter). Algunos widgets son exclusivos de ttk, como el cuadro combinado, la barra de progreso, la vista de árbol, el cuaderno, el separador y el control de tamaño. [ 9 ]
Marco
En Tkinter, el widget Frame es la unidad básica de organización para diseños complejos. Un frame es un área rectangular que puede contener otros widgets.
Niño y padre
Cuando se crea un widget, se establece una relación padre-hijo. Por ejemplo, si colocas una etiqueta de texto dentro de un marco, el marco es el padre de la etiqueta.
Aplicación mínima
A continuación se muestra una aplicación mínima de Python 3 Tkinter con un widget: [ 10 ]
#!/usr/bin/env python3from tkinter import *raíz = Tk () # Crea la ventana raíz (base)w = Label ( raíz , texto = "¡Hola, mundo!" ) # Crea una etiqueta con palabrasw.pack () # Coloca la etiqueta en la ventanaraíz.mainloop () # Iniciar el bucle de eventosPara Python 2, la única diferencia es que la palabra "tkinter" en el comando de importación se escribirá con mayúscula inicial como "Tkinter". [ 11 ]
Proceso
Hay cuatro etapas para crear un widget [ 12 ]
- Crear
- Créalo dentro de un marco
- Configurar
- Cambia los atributos del widget.
- Embalar
- Colócalo en la posición deseada para que sea visible. Los desarrolladores también tienen la opción de usar .grid() (row= int , column= int para definir filas y columnas para posicionar el widget, por defecto es 0) y .place() (relx= int o decimal , rely= int o decimal , define coordenadas en el marco o ventana).
- Unir
- Vincúlalo a una función o evento.
Suelen estar comprimidos y el orden puede variar.
Aplicación sencilla
Utilizando el paradigma orientado a objetos en Python, un programa simple sería (requiere Tcl versión 8.6, que Python no utiliza en MacOS de forma predeterminada):
#!/usr/bin/env python3import tkinter as tkclase Aplicación ( tk . Frame ):"La aplicación mantiene el estado de toda la aplicación."def __init__ ( self , root = None ):tk . Frame . __init__ ( self , root )cuadrícula propia ( )self.createWidgets ( )def crearWidgets ( self ):self.medialLabel = tk.Label ( self , text = " Hola Mundo " )self.medialLabel.config ( bg = " # 00ffff " )self.medialLabel.grid ( )self.quitButton = tk.Button ( self , text = " Salir " , command = self.quit )self.quitButton.grid ( )aplicación = Aplicación ()aplicación.root = tk.Tk ( )app.root.title ( " Aplicación de ejemplo " )app.mainloop()- line 1: Hashbangdirective to the program launcher, allowing the selection of an appropriate interpreter executable, when self-executing.[13]
- line 2: Imports the tkinter module into your program's namespace, but renames it as tk.
- line 5: The application class inherits from Tkinter's Frame class.
- line 7: Defines the function that sets up the Frame.
- line 8: Calls the constructor for the parent class, Frame.
- line 12: Defining the widgets.
- line 13: Creates a label, named MedialLabel with the text "Hello World".
- line 14: Sets the MedialLabel background colour to cyan.
- line 15: Places the label on the application so it is visible using the grid geometry manager method.
- line 16: Creates a button labeled “Quit”.
- line 17: Places the button on the application. Grid, place and pack are all methods of making the widget visible.
- line 20: The main program starts here by instantiating the Application class.
- line 21: Creates main window app.root as a Tk object.
- line 22: This method call sets the title of the window to “Sample application”.
- line 23: Starts the application's main loop, waiting for mouse and keyboard events.
See also
- IDLE — integrated development environment in Python, written exclusively using Tkinter
References
- ↑"Tkinter — Python interface to Tcl/Tk — Python v2.6.1 documentation". Retrieved 2009-03-12.
- ↑"Tkinter - Pythoninfo Wiki".
- ↑tkinter—Python interface to Tcl/Tk—Python 3.9.10 Documentation
- ↑Shipman, John W. (2010-12-12), Tkinter reference: a GUI for Python, New Mexico Tech Computer Center, retrieved 2012-01-11
- ↑"Tkinter - Tkinter Wiki". Archived from the original on 2013-11-13. Retrieved 2013-11-13.
- ↑"tkinter — Python interface to Tcl/Tk". Python 3.14.5 documentation. Retrieved 2026-05-30.
- ↑"Python issue #2983, "Ttk support for Tkinter"".
- ↑"Python subversion revision 69051, which resolves issue #2983 by adding the ttk module".
- ↑"Tkinter ttk widgets - Python Tutorial". CodersLegacy. Retrieved 2022-01-13.
- ↑"Tkinter 8.5 reference: a GUI for Python".
- ↑Fleck, Dan. "Tkinter – GUIs in Python"(PDF). CS112. George Mason University. Retrieved 18 August 2018.
- ↑ Klein, Bernd. "Programación de GUI con Python: eventos y enlaces" . www.python-course.eu . Consultado el 18 de agosto de 2018 .
- ↑ "PEP 397 — Lanzador de Python para Windows — Python.org" . Consultado el 7 de junio de 2017 .
Enlaces externos
- TkInter , Wiki de Python
- Tutorial de interfaz gráfica de usuario de Tkinter , que cubre cada widget individualmente.
- TkDocs : incluye información independiente del lenguaje y específica de Python, además de un tutorial.
- John Shipman, Referencia de Tkinter 8.5: una interfaz gráfica de usuario para Python
- Ferg, Stephen, Pensando en Tkinter
- Bibliotecas de Python (lenguaje de programación)
- Tk (software)