El widget text permite editar y mostrar texto (también imágenes). Permite editar el formato del texto, como por ejemplo la fuente, el color o el tamaño de letra.
# -*- coding: utf-8 -*-
"""
Ejemplo de ventana básico con text
"""
#Importamos las librerías necesarias
import tkinter as tk
import os
ventana = tk.Tk() #Crea la ventana principal
cwd = os.getcwd() #Ruta actual del archivo
#Crea un widget text
text1 = tk.Text(ventana, height=31, width=53, state=tk.DISABLED)
#Crea la imagen de tk
foto = tk.PhotoImage(file=os.path.join(cwd,"Shakespeare.gif"))
text1.image_create(tk.END, image=foto) #Inserta la imagen en el text
text1.pack(side=tk.LEFT) #Ubica el text a la izquierda de la ventana
#Crea otro widget text y una barra de desplazamiento
text2 = tk.Text(ventana, height=31, width=45)
scroll = tk.Scrollbar(ventana, command=text2.yview)
text2.configure(yscrollcommand=scroll.set)
#Etiqueta el formato para los textos que se van a insertar en el widget
text2.tag_configure('big', font=('Verdana', 20, 'bold'))
text2.tag_configure('color', foreground='#476042',
font=('Tempus Sans ITC', 12, 'bold'))
#Inserta el texto
text2.insert(tk.END,'\nWilliam Shakespeare\n', 'big')
texto2 = """
William Shakespeare fue un dramaturgo, poeta y actor inglés.
Conocido en ocasiones como el Bardo de Avon,
Shakespeare es considerado el escritor más
importante en lengua inglesa y uno de los más
célebres de la literatura universal."""
text2.insert(tk.END, texto2, 'color')
text2.pack(side=tk.LEFT) #Ubica el otro text a la derecha
scroll.pack(side=tk.RIGHT, fill=tk.Y)
ventana.mainloop()
El resultado es el siguiente:
En este ejemplo hay dos text, text1 y 2. También hay una barra de desplazamiento (ver Tkinter Scrollbar) para el text2.
Para Text 1 (el de la izquierda):
- Se define el widget que lo va a contener y las opciones
height
,width
ystate
.height
ywidth
indican la geometría del text ystate
indican si es posible ingresar más texto, en este casotk.DISABLED
no permite realizar cambios en el text. - El text1 va a mostrar una imagen, que se crea con
foto = tk.PhotoImage(file=os.path.join(cwd,"Shakespeare.gif"))
(cwd es la ruta del directorio actual de trabajo, por lo que la imagen debe estar guardada en este directorio o donde esté guardado el archivo .py) y se inserta context1.image_create(tk.END, image=foto)
.
Para Text2 (el de la derecha):
- Se define el widget que lo va a contener y las opciones
height
ywidth
para indicar su geometría. - El text2 va a mostrar texto, para esto se definen dos etiquetas, por ejemplo
text2.tag_configure('big', font=('Verdana', 20, 'bold'))
, que indican el formato de un texto a insertar y context2.insert(ubicación en el text, texto a insertar, etiqueta formato)
se inserta el texto al widget.
Aquí para ver más opciones de Text.