Pythonbiblioteca Tkinter
Pythonbiblioteca Tkinter
Pythonbiblioteca Tkinter
#tkinter
Tabla de contenido
Acerca de 1
Observaciones 2
Otras lecturas 3
Versiones 3
Tcl 3
Pitón 3
Examples 4
Instalación o configuración 4
Introducción 8
Examples 8
Sintaxis 9
Parámetros 9
Observaciones 9
Examples 9
Sintaxis 11
Parámetros 11
Observaciones 11
Examples 12
Aquí hay un ejemplo de cómo convertir los botones de opción en los cuadros de botones: 12
Introducción 13
Examples 13
Sintaxis 15
Parámetros 15
Observaciones 15
Examples 15
.después() 15
Introducción 17
Examples 17
paquete() 17
cuadrícula() 18
lugar() 19
Examples 22
Introducción 25
Sintaxis 25
Parámetros 25
Observaciones 25
Examples 25
Conexión de una barra de desplazamiento vertical a un widget de texto 25
Introducción 28
Sintaxis 28
Parámetros 28
Observaciones 28
Examples 28
Crear el widget 28
Embalaje 29
Barra de progreso 30
Creditos 32
Acerca de
You can share this PDF with anyone you feel could benefit from it, downloaded the latest version
from: tkinter
It is an unofficial and free tkinter ebook created for educational purposes. All the content is
extracted from Stack Overflow Documentation, which is written by many hardworking individuals at
Stack Overflow. It is neither affiliated with Stack Overflow nor official tkinter.
The content is released under Creative Commons BY-SA, and the list of contributors to each
chapter are provided in the credits section at the end of this book. Images may be copyright of
their respective owners unless otherwise specified. All trademarks and registered trademarks are
the property of their respective company owners.
Use the content presented in this book at your own risk; it is not guaranteed to be correct nor
accurate, please send your feedback and corrections to info@zzzprojects.com
https://riptutorial.com/es/home 1
Capítulo 1: Empezando con tkinter
Observaciones
Tkinter (" Tk Inter face") es un paquete multiplataforma estándar de python para crear interfaces
gráficas de usuario (GUI). Proporciona acceso a un intérprete de Tcl subyacente con el kit de
herramientas Tk, que en sí mismo es una biblioteca de interfaz de usuario gráfica multiplataforma
y multiplataforma.
Tkinter no es la única biblioteca GUI para python, pero es la que viene de serie. Las bibliotecas de
GUI adicionales que se pueden usar con python incluyen wxPython , PyQt y kivy .
Como herramienta de aprendizaje, tkinter tiene algunas características que son únicas entre los
kits de herramientas GUI, como las fuentes con nombre, las etiquetas de enlace y el rastreo de
variables.
import Tkinter as tk
import tkFileDialog as filedialog
import ttk
import tkinter as tk
from tkinter import filedialog
https://riptutorial.com/es/home 2
from tkinter import ttk
Otras lecturas
• Preguntas Tkinter en Stackoverflow
• Documentación oficial de Python 3 tkinter
• Documentación oficial de Python 2 tkinter
• Tkdocs.com - multiplataforma tk documentación
• Introducción de Effbot a tkinter
• Guía de referencia Tkinter, New Mexico Tech
Versiones
Tcl
8.6 2016-07-27
8.5 2016-02-12
8.4 2013-06-01
8.3 2002-10-18
8.2 1999-12-16
8.1 1999-05-26
8.0 1999-03-09
Pitón
3.6 2016-12-23
3.5 2015-09-13
3.4 2014-03-17
3.3 2012-09-29
3.2 2011-02-20
https://riptutorial.com/es/home 3
Versión Fecha de lanzamiento
3.1 2009-06-26
3.0 2008-12-03
2.7 2010-07-03
2.6 2008-10-02
2.5 2006-09-19
2.4 2004-11-30
2.3 2003-07-29
2.2 2001-12-21
2.1 2001-04-15
2.0 2000-10-16
Examples
Instalación o configuración
Tkinter viene preinstalado con los binarios del instalador de Python para Mac OS X y la
plataforma Windows. Por lo tanto, si instala Python desde los archivos binarios oficiales para Mac
OS X o la plataforma Windows, puede utilizar Tkinter.
Para las versiones Debian de Linux, debe instalarlo manualmente utilizando los siguientes
comandos.
Para Python 3
Las distribuciones de Linux con yum installer pueden instalar el módulo tkinter usando el
comando:
Verificando instalación
https://riptutorial.com/es/home 4
import tkinter as tk # for Python 3 version
Para verificar la versión de Tkinter, escriba los siguientes comandos en su REPL de Python:
import tkinter as tk
tk._test()
import Tkinter as tk
tk._test()
Nota: Importar Tkinter as tk no es obligatorio, pero es una buena práctica ya que ayuda a
mantener la coherencia entre las versiones.
Probemos nuestro conocimiento básico de tkinter creando el clásico "¡Hola mundo!" programa.
Primero, debemos importar tkinter, esto variará según la versión (consulte la sección de
comentarios sobre "Diferencias entre Python 2 y 3")
import tkinter as tk
import Tkinter as tk
Usar as tk no es estrictamente necesario, pero lo usaremos para que el resto de este ejemplo
funcione de la misma manera para ambas versiones.
Ahora que hemos importado el módulo tkinter, podemos crear la raíz de nuestra aplicación
usando la clase Tk :
root = tk.Tk()
Esto actuará como la ventana para nuestra aplicación. (Tenga en cuenta que las ventanas
adicionales deben ser instancias de Toplevel lugar)
https://riptutorial.com/es/home 5
Ahora que tenemos una ventana, vamos a agregarle texto con una Label
Una vez que la aplicación esté lista, podemos iniciarla (ingresar al bucle del evento principal ) con
el método mainloop
root.mainloop()
Esto abrirá y ejecutará la aplicación hasta que se detenga al cerrar la ventana o al llamar a las
funciones que salen de las devoluciones de llamada (que se root.destroy() más adelante) como
root.destroy() .
root = tk.Tk()
root.mainloop()
import tkinter as tk
class HelloWorld(tk.Frame):
def __init__(self, parent):
super(HelloWorld, self).__init__(parent)
if __name__ == "__main__":
root = tk.Tk()
https://riptutorial.com/es/home 6
main = HelloWorld(root)
main.pack(fill="both", expand=True)
root.mainloop()
Nota: es posible heredar de casi cualquier widget tkinter, incluida la ventana raíz. Heredar de
tkinter.Frame es, al menos, posiblemente el más flexible, ya que admite interfaces de documentos
múltiples (MDI), interfaces de documentos únicos (SDI), aplicaciones de página única y
aplicaciones de página múltiple.
https://riptutorial.com/es/home 7
Capítulo 2: Agregar imágenes a la etiqueta /
botón
Introducción
Esto muestra el uso correcto de las imágenes y cómo visualizarlas correctamente.
Examples
Formatos de archivo soportados por Tkinter
Tkinter admite archivos .ppm de PIL (Python Imaging Library), .JPG, .PNG y .GIF.
Para importar una imagen, primero necesita crear una referencia como esta:
Ahora, podemos agregar esta imagen a los botones y etiquetas como usando la devolución de
llamada "img":
Para mostrar un gif, debes mostrarlo fotograma a fotograma como una animación.
Un gif animado consiste en una serie de cuadros en un solo archivo. Tk carga el primer
fotograma, pero puede especificar diferentes fotogramas pasando un parámetro de índice al crear
la imagen. Por ejemplo:
Si carga todos los marcos en PhotoImages separados y luego usa eventos de temporizador para
cambiar el marco que se muestra (label.configure (image = nextframe)). El retraso en el
temporizador le permite controlar la velocidad de la animación. No hay nada que le proporcione el
número de cuadros en la imagen que no sea la creación de un cuadro una vez que supera el
recuento de cuadros.
https://riptutorial.com/es/home 8
Capítulo 3: El widget de entrada Tkinter
Sintaxis
• entrada = tk.Entry ( padre , ** kwargs )
• entry.get ()
• entry.insert (índice, "valor")
• entry.delete (start_index, end_index)
• entry.bind (event, callback)
Parámetros
Parámetro Descripción
Observaciones
Estos ejemplos asumen que tkinter se ha importado con import tkinter as tk (python 3) o import
Tkinter as tk (python 2).
Examples
Creación de un widget de entrada y configuración de un valor predeterminado
El valor de un widget de entrada se puede obtener con el método get del widget:
name_entry = tk.Entry(parent)
...
name = name_entry.get()
https://riptutorial.com/es/home 9
Opcionalmente, puede asociar una instancia de StringVar y recuperar el valor de StringVar lugar
de hacerlo desde el widget:
name_var = tk.StringVar()
name_entry = tk.Entry(parent, textvariable=name_var)
...
name = name_var.get()
Para restringir los caracteres que se pueden escribir en un widget de entrada, solo números, por
ejemplo, se puede agregar un comando de validación a la entrada. Un comando de validación es
una función que devuelve True si se acepta el cambio, False contrario. Esta función se llamará
cada vez que se modifique el contenido de la entrada. Se pueden pasar varios argumentos a esta
función, como el tipo de cambio (inserción, eliminación), el texto insertado, ...
def only_numbers(char):
return char.isdigit()
validation = parent.register(only_numbers)
entry = Entry(parent, validate="key", validatecommand=(validation, '%S'))
Al usar el método .get (), lo que sea que esté en el widget de entrada se convertirá en una
cadena. Por ejemplo, independientemente del tipo de entrada (puede ser un número o una
oración), el resultado resultante será una cadena. Si el usuario escribe 4, la salida será "4" como
en una cadena. Para obtener un int desde un widget de entrada, primero llame al método .get ().
What_User_Wrote = Entry.get()
Convert_To_Int = int(What_User_Wrote)
Convert_To_Int = int(Entry.get())
https://riptutorial.com/es/home 10
Capítulo 4: El widget Tkinter Radiobutton
Sintaxis
• radiobutton = tk.Radiobutton (padre, ** kwargs)
Parámetros
Parámetro Descripción
mando Función llamada cada vez que el usuario cambia el estado del botón de radio
indicador 1 o Verdadero para los botones de opción, 0 o Falso para los cuadros de
de botones
Variable de control que el botón de radio comparte con el otro botón de radio
variable
del grupo.
Observaciones
Estos ejemplos asumen que tkinter se ha importado con import tkinter as tk (python 3) o import
Tkinter as tk (python 2).
Referencia:
https://riptutorial.com/es/home 11
indicador de botón de radio por separado, y el botón seleccionado se dibuja como
SUNKEN en lugar de AUMENTADO:
- Effbot
Examples
Aquí hay un ejemplo de cómo convertir los botones de opción en los cuadros
de botones:
import tkinter as tk
root = tk.Tk()
rbvar = StringVar()
rbvar.set(" ")
Dicho grupo está formado por botones de radio que comparten una variable de control de modo
que no se puede seleccionar más de uno.
# control variable
var = tk.IntVar(parent, 0)
# group of radiobuttons
for i in range(1,4):
tk.Radiobutton(parent, text='Choice %i' % i, value=i, variable=var).pack()
https://riptutorial.com/es/home 12
Capítulo 5: Personaliza los estilos ttk.
Introducción
El estilo de los nuevos widgets ttk es uno de los aspectos más poderosos de ttk. Además del
hecho de que es una forma de trabajar completamente diferente a la del paquete tk tradicional,
permite realizar un gran grado de personalización en tus widgets.
Examples
Personaliza una vista de árbol
Tomando Treeview: Ejemplo básico , se puede mostrar cómo personalizar una vista de árbol
básica.
En este caso, creamos un estilo "mystyle.Treeview" con el siguiente código (vea los comentarios
para comprender lo que hace cada línea):
style = ttk.Style()
style.configure("mystyle.Treeview", highlightthickness=0, bd=0, font=('Calibri', 11)) # Modify
the font of the body
style.configure("mystyle.Treeview.Heading", font=('Calibri', 13,'bold')) # Modify the font of
the headings
style.layout("mystyle.Treeview", [('mystyle.Treeview.treearea', {'sticky': 'nswe'})]) # Remove
the borders
tree=ttk.Treeview(master,style="mystyle.Treeview")
Si desea tener un formato diferente dependiendo de las filas, puede hacer uso de tags :
tree.tag_configure('odd', background='#E8E8E8')
tree.tag_configure('even', background='#DFDFDF')
El resultado es una vista de árbol con fuentes modificadas tanto en el cuerpo como en los
encabezados, sin bordes y colores diferentes para las filas:
https://riptutorial.com/es/home 13
Nota: Para generar la imagen anterior, debe agregar / cambiar las líneas de código mencionadas
anteriormente en el ejemplo Treeview: Basic ejemplo .
https://riptutorial.com/es/home 14
Capítulo 6: Retrasando una función
Sintaxis
• widget.after (delay_ms, callback, * args)
Parámetros
Parámetro Descripción
llamar de Función que se llama después del delay_ms dado. Si este parámetro no se
vuelta proporciona, .after actúa de manera similar a time.sleep (en milisegundos)
Observaciones
La sintaxis asume que un widget aceptado por el método .after ha sido creado previamente (es
decir, widget=tk.Label(parent) )
Examples
.después()
.after(delay, callback=None) es un método definido para todos los widgets tkinter. Este método
simplemente llama a la función de callback después de la delay dada en ms. Si no se proporciona
ninguna función, actúa de forma similar a time.sleep (pero en milisegundos en lugar de segundos)
# import tkinter
try:
import tkinter as tk
except ImportError:
import Tkinter as tk
class Timer:
def __init__(self, parent):
# variable storing time
self.seconds = 0
# label displaying time
self.label = tk.Label(parent, text="0 s", font="Arial 30", width=10)
self.label.pack()
# start the timer
self.label.after(1000, self.refresh_label)
def refresh_label(self):
https://riptutorial.com/es/home 15
""" refresh the content of the label every second """
# increment the time
self.seconds += 1
# display the new time
self.label.configure(text="%i s" % self.seconds)
# request tkinter to call self.refresh after 1s (the delay is given in ms)
self.label.after(1000, self.refresh_label)
if __name__ == "__main__":
root = tk.Tk()
timer = Timer(root)
root.mainloop()
https://riptutorial.com/es/home 16
Capítulo 7: Tkinter Geometry Managers
Introducción
Hay tres administradores de geometría para colocar los widgets: pack() , grid() y place() .
Examples
paquete()
Sintaxis
widget.pack(option)
Llenar
Determina si el widget mantiene el espacio mínimo necesario o ocupa cualquier espacio adicional
que se le asigne. Atributos: NINGUNO (predeterminado), X (rellenar horizontalmente), Y (rellenar
verticalmente), o AMBOS (rellenar tanto horizontal como verticalmente).
Expandir
Cuando se establece en SÍ, el widget se expande para llenar cualquier espacio no utilizado en el
elemento primario del widget. Atributos: SI, NO.
Lado
Determina de qué lado del elemento primario del widget se empaqueta. Atributos: TOP
(predeterminado), BOTTOM, LEFT o RIGHT.
Ejemplo
root.mainloop()
Resultado
https://riptutorial.com/es/home 17
cuadrícula()
El administrador de geometría grid() organiza los widgets en una estructura similar a una tabla en
el widget principal. El widget maestro se divide en filas y columnas, y cada parte de la tabla puede
contener un widget. Utiliza column , columnspan , ipadx , ipady , padx , pady , row , rowspan y sticky .
Sintaxis
widget.grid(options)
Columna
La columna para colocar el widget. La columna predeterminada es 0, que es la columna más a la
izquierda.
Columnspan
Cuantas widgets de columnas ocupa. El valor predeterminado es 1.
Ipadx
Cuántos píxeles para rellenar el widget horizontalmente dentro de los bordes del widget.
Ipady
Cuántos píxeles para rellenar el widget verticalmente dentro de los bordes del widget.
Padx
Cuántos píxeles para rellenar el widget horizontalmente fuera de los bordes del widget.
Pady
Cuántos píxeles para rellenar el widget verticalmente fuera de los bordes del widget.
Fila
La fila para colocar el widget. La fila predeterminada es 0, que es la columna superior.
Envergadura
Cuántas filas ocupa el widget. El valor predeterminado es 1.
Pegajoso
Cuando el widget es más pequeño que la celda, sticky se usa para indicar a qué lados y esquinas
de la celda se adhiere el widget. La dirección se define por las direcciones de la brújula: N, E, S,
W, NE, NW, SE y SW y cero. Estas podrían ser una concatenación de cadenas, por ejemplo,
NESW hace que el widget ocupe toda el área de la celda.
Ejemplo
https://riptutorial.com/es/home 18
from tkinter import *
root = Tk()
btn_column = Button(root, text="I'm in column 3")
btn_column.grid(column=3)
root.mainloop()
Resultado
lugar()
Ancla
Indica donde está anclado el widget. Las opciones son direcciones de la brújula: N, E, S, W, NE,
https://riptutorial.com/es/home 19
NW, SE o SW, que se relacionan con los lados y las esquinas del widget principal. El valor
predeterminado es NW (la esquina superior izquierda del widget)
Bordermode
Bordermode tiene dos opciones: INSIDE , que indica que otras opciones se refieren al interior del
padre, (Ignorar los bordes del padre) y OUTSIDE , que es lo contrario.
Altura
Especifique la altura de un widget en píxeles.
Anchura
Especifique el ancho de un widget en píxeles.
Relheight
La altura como flotante entre 0.0 y 1.0, como una fracción de la altura del widget principal.
Relwidth
Ancho como flotante entre 0.0 y 1.0, como una fracción del ancho del widget principal.
Relx
Desplazamiento horizontal como flotante entre 0.0 y 1.0, como una fracción del ancho del widget
principal.
Confiar
Desplazamiento vertical como flotante entre 0.0 y 1.0, como una fracción de la altura del widget
principal.
X
Desplazamiento horizontal en píxeles.
Y
Desplazamiento vertical en píxeles.
Ejemplo
https://riptutorial.com/es/home 20
btn_rely=Button(root, text="Rely of 0.7")
btn_rely.place(rely=0.7)
root.mainloop()
Resultado
https://riptutorial.com/es/home 21
Capítulo 8: Varias ventanas (widgets
TopLevel)
Examples
Diferencia entre Tk y Toplevel
Tkes la raíz absoluta de la aplicación, es el primer widget que debe crearse y la GUI se cerrará
cuando se destruya.
try:
import tkinter as tk #python3
except ImportError:
import Tkinter as tk #python2
root.mainloop()
Si su programa de Python solo representa una aplicación única (que casi siempre lo hará),
entonces debería tener solo una instancia de Tk , pero puede crear tantas ventanas de Toplevel
como desee.
try:
import tkinter as tk #python3
except ImportError:
import Tkinter as tk #python2
def generate_new_window():
window = tk.Toplevel()
label = tk.Label(window, text="a generic Toplevel window")
label.pack()
root = tk.Tk()
spawn_window_button = tk.Button(root,
text="make a new window!",
https://riptutorial.com/es/home 22
command=generate_new_window)
spawn_window_button.pack()
root.mainloop()
El caso más básico para levantar una ventana en particular sobre las otras, simplemente llame al
método .lift() en esa ventana (ya sea Toplevel o Tk )
root = tk.Tk()
for i in range(4):
#make a window with a label
window = tk.Toplevel(root)
label = tk.Label(window,text="window {}".format(i))
label.pack()
#add a button to root to lift that window
button = tk.Button(root, text = "lift window {}".format(i), command=window.lift)
button.grid(row=i)
root.mainloop()
Sin embargo, si esa ventana se destruye al intentar levantarla, se generará un error como este:
A menudo, cuando intentamos colocar una ventana en particular frente al usuario, pero se cerró,
una buena alternativa es recrear esa ventana:
dialog_window = None
def create_dialog():
"""creates the dialog window
** do not call if dialog_window is already open, this will
create a duplicate without handling the other
if you are unsure if it already exists or not use show_dialog()"""
global dialog_window
dialog_window = tk.Toplevel(root)
label1 = tk.Label(dialog_window,text="this is the dialog window")
label1.pack()
https://riptutorial.com/es/home 23
#put other widgets
dialog_window.lift() #ensure it appears above all others, probably will do this anyway
def show_dialog():
"""lifts the dialog_window if it exists or creates a new one otherwise"""
#this can be refactored to only have one call to create_dialog()
#but sometimes extra code will be wanted the first time it is created
if dialog_window is None:
create_dialog()
return
try:
dialog_window.lift()
except tk.TclError:
#window was closed, create a new one.
create_dialog()
root = tk.Tk()
dialog_button = tk.Button(root,
text="show dialog_window",
command=show_dialog)
dialog_button.pack()
root.mainloop()
De esta manera, la función show_dialog mostrará la ventana de diálogo si existe o no, también
tenga en cuenta que puede llamar a .winfo_exists() para verificar si existe antes de intentar
levantar la ventana en lugar de envolverla en un try:except .
También existe el método .lower() que funciona de la misma manera que el método .lift() ,
excepto que se baja la ventana en la pila:
root = tk.Tk()
root.title("ROOT")
extra = tk.Toplevel()
label = tk.Label(extra, text="extra window")
label.pack()
lower_button = tk.Button(root,
text="lower this window",
command=root.lower)
lower_button.pack()
root.mainloop()
Notará que baja incluso por debajo de otras aplicaciones, para bajar solo por debajo de una
determinada ventana, puede pasarlo al método .lower() , de manera similar, esto también se
puede hacer con el método .lift() para elevar una ventana por encima de otra. uno.
https://riptutorial.com/es/home 24
Capítulo 9: Widgets de desplazamiento
Introducción
Las barras de desplazamiento se pueden agregar a los widgets Listbox, Canvas y Text. Además,
los widgets de entrada se pueden desplazar horizontalmente. Para poder desplazar otro tipo de
widgets, debe colocarlos dentro de un lienzo o un widget de texto.
Sintaxis
• scrollbar = tk.Scrollbar (parent, ** kwargs)
Parámetros
Parámetro Descripción
Observaciones
Estos ejemplos asumen que tkinter se ha importado con import tkinter as tk (python 3) o import
Tkinter as tk (python 2).
Examples
Conexión de una barra de desplazamiento vertical a un widget de texto
text = tk.Text(parent)
text.pack(side="left")
text.configure(yscrollcommand=scroll_y.set)
https://riptutorial.com/es/home 25
Desplazando un widget de Canvas horizontal y verticalmente
El principio es esencialmente el mismo que para el widget de texto, pero se utiliza un diseño de
Grid para colocar las barras de desplazamiento alrededor del widget.
canvas.configure(yscrollcommand=scroll_y.set, xscrollcommand=scroll_x.set)
A diferencia del widget de texto, la región desplazable del lienzo no se actualiza automáticamente
cuando se modifica su contenido, por lo que debemos definirla y actualizarla manualmente
utilizando el argumento scrollregion :
canvas.configure(scrollregion=canvas.bbox("all"))
canvas.bbox("all") devuelve las coordenadas del rectángulo que se ajustan a todo el contenido
del lienzo.
Cuando una ventana contiene muchos widgets, es posible que no todos estén visibles. Sin
embargo, ni una ventana (Tk o instancia Toplevel) ni un marco son desplazables. Una solución
para hacer que el contenido de la ventana se pueda desplazar es colocar todos los widgets en un
marco y luego incrustar este marco en un lienzo utilizando el método create_window .
canvas = tk.Canvas(parent)
scroll_y = tk.Scrollbar(parent, orient="vertical", command=canvas.yview)
frame = tk.Frame(canvas)
# group of widgets
for i in range(20):
tk.Label(frame, text='label %i' % i).pack()
# put the frame in the canvas
canvas.create_window(0, 0, anchor='nw', window=frame)
# make sure everything is displayed before configuring the scrollregion
canvas.update_idletasks()
canvas.configure(scrollregion=canvas.bbox('all'),
yscrollcommand=scroll_y.set)
https://riptutorial.com/es/home 26
desplazamiento
https://riptutorial.com/es/home 27
Capítulo 10: Widgets ttk
Introducción
Ejemplos de los diferentes widgets ttk. Ttk tiene un total de 17 widgets, once de los cuales ya
existían en tkinter (tk).
Sintaxis
• tree = ttk.Treeview (master, ** kwargs)
Parámetros
Parámetro Descripción
Los widgets tkinter existen en una jerarquía. Excepto por la ventana raíz, todos
los widgets tienen un padre (también llamado "maestro"). Cuando el widget se
dominar
agregue a la pantalla con paquete, lugar o cuadrícula, aparecerá dentro de este
widget principal
Observaciones
Estos ejemplos asumen que tkinter se ha importado con import tkinter as tk (python 3) o import
Tkinter as tk (python 2).
También se supone que ttk se ha importado con from tkinter import ttk (python 3) o import ttk
(python 2).
Examples
Treeview: ejemplo básico
Este widget se utiliza para mostrar elementos con jerarquía. Por ejemplo, el explorador de
Windows se puede reproducir de esta manera. Algunas bonitas tablas también se pueden hacer
usando el widget de vista de treeview .
Crear el widget
tree=ttk.Treeview(master)
https://riptutorial.com/es/home 28
Definición de las columnas.
Puede definir cuántas columnas, su ancho y su ancho mínimo cuando el usuario intenta estirarlo.
Al definir stretch=tk.NO , el usuario no puede modificar el ancho de la columna.
tree["columns"]=("one","two","three")
tree.column("#0", width=270, minwidth=270, stretch=tk.NO)
tree.column("one", width=150, minwidth=150, stretch=tk.NO)
tree.column("two", width=400, minwidth=200)
tree.column("three", width=80, minwidth=50, stretch=tk.NO)
Embalaje
tree.pack(side=tk.TOP,fill=tk.X)
https://riptutorial.com/es/home 29
Barra de progreso
El widget ttk.progress es útil cuando se trata de cálculos largos para que el usuario sepa que el
programa se está ejecutando. A continuación, se muestra un ejemplo de actualización de una
barra de progreso cada 0,5 segundos:
El modo "determinado" se usa cuando la barra de progreso está bajo el control del programa.
https://riptutorial.com/es/home 30
Emular el progreso cada 0.5 s.
divisions=10
for i in range(divisions):
currentValue=currentValue+10
progressbar.after(500, progress(currentValue))
progressbar.update() # Force an update of the GUI
https://riptutorial.com/es/home 31
Creditos
S.
Capítulos Contributors
No
Agregar imágenes a
2 Angrywasabi
la etiqueta / botón
El widget de entrada
3 Angrywasabi, Bryan Oakley, double_j, j_4321
Tkinter
El widget Tkinter
4 j_4321, nbro, Parviz Karimli
Radiobutton
Personaliza los
5 David Duran
estilos ttk.
Retrasando una
6 David Duran, Neil A., Tadhg McDonald-Jensen
función
Tkinter Geometry
7 Henry
Managers
Varias ventanas
8 Tadhg McDonald-Jensen
(widgets TopLevel)
Widgets de
9 j_4321
desplazamiento
https://riptutorial.com/es/home 32