Presentación tkinter — Interface de Python para Tcl/Tk
nombre: alexa jazmin mata díaz especialidad: programación profesor:azael grupo:4205
Que es tkinder?
El paquete tkinter («interfaz Tk») es la interfaz por defecto de Python para el kit de herramientas de GUI Tk. Tanto Tk como tkinter están disponibles en la mayoría de las plataformas Unix, así como en sistemas Windows (Tk en sí no es parte de Python, es mantenido por ActiveState).
Índice
modelo de subprocesamiento
arquitectura
tipos de opciones tk
guia practica de configuracion de opciones
modulo stinker
enlaces y eventos
el empaquetador
modulo de soporte
el parametro de indice
opciones de empaquetador
progrma de ''hola mundo''
imagenes
asociacion de variables de widget
conceptos de tk
gestor de archivos
el gestor de ventanas
como lo hago y como funciona?
Arquitectura
Tcl/Tk no es una biblioteca única mas bien consiste en unos pocos módulos distintivos entre si. Tcl Tcl es un lenguaje de programación interpretado y dinámico, tal como Python. La librería TCL contiene una interfaz con C que crea y gestiona una o más instancias del intérprete de TCL. Cada intérprete tiene su cola de eventos y entrega facilidades para enviar procesos a la cola y procesarlos. El modelo de ejecución en Tcl es diseñado alrededor de cooperar en múltiples asignaciones y Tkinter ayuda a salvar estas diferencias. Tk Tk es un paquete de Tcl implementado en C que agrega comandos personalizados que permiten manipular widget en la GUI. Cada objeto de la clase Tk agrega su instancia de interprete Tcl con Tk cargado en el. Los widget de Tk son muy personalizables, aunque a costa de una apariencia anticuada. Tk usa eventos de la cola de Tcl para generar y procesar eventos de la GUI. Ttk El nuevo tema Tk (Ttk) es una nueva familia de widgets de Tk que proveen una mejor apariencia en diferentes plataformas mas que varios de los widgets clásicos de Tk. Ttk es distribuido como parte de Tk estando disponible a partir de la versión 8.5. Enlaces para Python son entregados en un módulo aparte, tkinter.ttk.
Modulo stinker
El soporte para Tkinter se distribuye para varios módulos.El cual entrega el conjunto de widget temáticos y la API correspondiente:
- ScreenName
Cuando se proporciona (como cadena de caracteres), establece la variable de entorno DISPLAY. (solo X11)
baseName
Nombre del archivo de perfil. De forma predeterminada, baseName se deriva del nombre del programa (sys.argv[0]).
- className
Nombre de la clase del widget. Se utiliza como archivo de perfil y como nombre con el que se invoca a Tcl (argv0 en interp). useTk
Si es True, inicializa el subsistema Tk. La función tkinter.Tcl() se establece en False.
- sync
Si es True, ejecuta todos los comandos del servidor X de forma síncrona, por lo tanto, los errores se notifican inmediatamente. Se puede utilizar en el proceso de depuración. (solo X11)
Modulo stinker
Esto crea un widget de nivel superior de Tk que generalmente es la ventana principal de una aplicación. Cada instancia tiene su propio intérprete Tcl asociado.
La clase Tk normalmente se instancia utilizando los valores predeterminados. No obstante, se reconocen los siguientes argumentos de palabra clave:
use
Especifica el id de la ventana en la que se incrustar la aplicación, en lugar de crearla como una ventana independiente de nivel superior.
tk
El objeto de la aplicación Tk creado al instanciar Tk. Esto proporciona acceso al intérprete de Tcl. Todos los widget que se adjuntan a la misma instancia de Tk tienen el mismo valor para el atributo tk.
master Los términos master y parent son similares al llamar a winfo_parent() este retorna una cadena con del nombre del widget, mientras que master retorna el objeto. parent/child refleja la relación en forma de árbol, mientras que master/slave, refleja la estructura del contenedor.children Los descendientes directos de este widget como dict con los nombres del widget secundario como clave y los objetos de instancia secundarios como valor.tkinter.Tcl(screenName=None, baseName=None, className='Tk', useTk=False)
La función Tcl() es una función de fábrica que crea un objeto muy similar al creado por la clase Tk, excepto que no inicializa el subsistema Tk.
modulos de soporte
Módulos que proporcionan soporte a Tk:tkinter Módulos de Tkinter. tkinter.colorchooser Cuadro de diálogo que permite al usuario elegir un color. tkinter.commondialog Clase base para cuadros de diálogo definidos en los otros módulos listados aquí. tkinter.filedialog Cuadros de diálogo por defecto que permiten al usuario especificar un archivo para abrir o guardar. tkinter.font Utilidades para ayudar a trabajar con fuentes. tkinter.messagebox Acceso a cuadros de diálogo estándar de Tk.tkinter.scrolledtext Widget de texto con una barra de desplazamiento vertical integrada. tkinter.simpledialog Cuadros de diálogo simples y funciones útiles. tkinter.ttk Un set de widgets temáticos fueron añadidos en Tk 8.5, entregando alternativas modernas para muchos de los widgets clásicos en el módulo principal de tkinter.
Programa de ''hola mundo''
Comenzaremos a explorar Tkinter a través de una simple aplicación «Hola Mundo».
- Después de las declaraciones de import, la línea siguiente será la de crear la instancia de la clase Tk la cual iniciativa Tk y crea el interprete asociado a Tcl. Esto también crea una ventana de nivel superior, conocida como la ventana raíz la cual sirve como la ventana principal de la aplicación.
- En la siguiente línea se crea el marco del widget, el cual en este caso contendrá la etiqueta y el botón que crearemos después. El marco encaja dentro de la ventana raíz.
- La próxima línea crea una etiqueta para el widget que contiene una cadena de texto estática. El método grid() es usado para especificar la posición del diseño de la etiqueta que está dentro del marco del widget, similar a como trabajan las tablas en HTML.
- Es entonces cuando el botón del widget es creado y dejado a la derecha de la etiqueta. Una vez pulsado llamará al método destroy() de la ventana raíz.
- Finalmente el método mainloop() muestra todo en pantalla y responde a la entrada del usuario hasta que el programa termina.
conceptos de tk
Incluso con este sencillo programa se pueden mostrar conceptos claves de Tk: widgets Una interfaz de usuario de Tkinter está compuesta de varios widgets individuales. Cada widget es representado como un objeto de Python, instanciado desde clases tales como ttk.Frame, ttk.Label y ttk.Button.
jerarquía de los widgets
Los widgets se organizan en jerarquías. La etiqueta y el botón estaban dentro del marco el que a su vez estaba contenido dentro del marco raíz. Cuando se crea cada child del widget su parent es pasado como el primer argumento del constructor del widget.
opciones de configuración
Los widgets tienen opciones de configuración los cuales modifican su apariencia y comportamiento, como el texto que se despliega en la etiqueta o el botón. Diferentes clases de widgets tendrán diferentes conjuntos de opciones.
gestión del diseño de formularios
Los widgets no son añadidos automáticamente a la interfaz de usuario una vez que han sido creados. Un administrador de geometrías como grid controla donde la interfaz de usuario es colocada.
ejecución del evento
Tkinter reacciona a la entrada del usuario, realiza los cambios del programa e incluso actualiza lo que se muestra en pantalla solo cuando se ejecuta activamente un event loop. Si el programa no esta ejecutando el evento, su interfaz de usuario no se actualizará.
¿Cómo lo hago?, ¿Cómo funciona?
Si no esta seguro sobre como realizar ciertas acciones en Tkinter y no se puede encontrar información de forma rápida.Para encontrar que opciones de configuración están disponibles en cada widget, se utiliza la llamada al método configure(), el cual retorna un diccionario que contiene una gran variedad de información sobre cada objeto, incluyendo valores por defecto y actuales. Utilice el keys() para saber los nombres de cada opción.
La mayoría de los widgets tienen varias opciones de configuraciones en común, puede ser útil averiguar cuales son específicos de una clase de widget en particular. Comparando la lista de opciones de un widget sencillo
De manera similar se pueden encontrar los métodos disponibles para un objeto de un widget utilizando la función standard dir(). Si lo intentas podrás ver alrededor de 200 métodos comunes para los widgets por lo que de nuevo, es muy importante identificar las especificaciones de un widget.
modelo de subprocesamiento
Python y Tcl/Tk tienen modelos de subprocesamiento muy diferentes, con lo cual el módulo tkinter intenta ser un puente entre ambos. Si usted usa hilos, es muy posible que deba ser consciente de esto. En Tcl, diferentes hilos pueden ser creados, pero cada hilo tiene una instancia del interprete de Tcl asociada por separado. Los hilos pueden crear mas de una instancia del interprete, aunque puede ser usada solo por el hilo que ha sido creado. Cada objeto de la clase Tk creado por tkinter contiene un interprete para TCL. Esto también mantiene un seguimiento de cada hilo creado por el interprete. Las llamadas al módulo tkinter De forma interna si una llamada proviene desde un hilo diferente al creado por objeto Tk, un evento es publicado por la cola de eventos del interprete y cuando es ejecutado, el resultado es retornado al hilo de llamadas de Python. Las aplicaciones de Tcl/Tk son normalmente basados en eventos, lo que significa que después de la inicialización, el interprete corre un bucle de eventos que responde a los eventos. Al ser un evento de un solo proceso, los controladores responden rápidamente, en caso contrario ellos bloquearán el procesamiento de otros eventos. Para evitar esto, cualquier procesamiento de larga duración no deben ser procesados en el controlador de eventos, o ser separados en pequeñas piezas usando temporizadores o correr el proceso en otro hilo. Si el intérprete de Tcl no se está ejecutando el bucle del evento o procesando eventos, cualquier llamada a tkinter realizada desde hilos distintos al que ejecuta el intérprete de Tcl, fallará.
Guía práctica Configuración de opciones
Las opciones controlan parámetros como el color y el ancho del borde de un widget. Las opciones se pueden configurar de tres maneras: En el momento de la creación del objeto, utilizando argumentos de palabras clave
Después de la creación del objeto, tratando el nombre de la opción como un índice de diccionario
Usando el método config() para actualizar múltiples atributos después de la creación del objeto
El empaquetador
El empaquetador es uno de los mecanismos de gestión de geometría de Tk. Los administradores de geometría se utilizan para especificar la posición relativa de los widgets dentro de su contenedor: su master mutuo.El tamaño de cualquier widget maestro está determinado por el tamaño del widget esclavo interno. El empaquetador se usa para controlar dónde se colocará el widget esclavo en el widget maestro de destino. Para lograr el diseño deseado, puede empaquetar el widget en un marco y luego empaquetar ese marco en otro. Además, una vez empaquetado, la disposición se ajusta dinámicamente de acuerdo con los cambios de configuración posteriores. Tenga en cuenta que los widgets no aparecen hasta que su geometría no se haya especificado con un administrador de diseño de pantalla. Se puede llamar al método pack() con pares palabra-clave/valor que controlan dónde debe aparecer el widget dentro de su contenedor y cómo se comportará cuando se cambie el tamaño de la ventana principal de la aplicación. Aquí hay unos ejemplos:
opciones del empaquetador
anchor Tipo de anclaje. Indica dónde debe colocar el empaquetador a cada esclavo en su espacio. expand Un valor booleano, 0 o 1. fill Los valores legales son: 'x', 'y', 'both', 'none'. ipadx y ipady Una distancia que designa el relleno interno a cada lado del widget esclavo. padx y pady Una distancia que designa el relleno externo a cada lado del widget esclavo. side Los valores legales son: 'left', 'right', 'top', 'bottom'.
asociacion de variables de widgets
La asignación de un valor a ciertos objetos gráficos se puede vincular directamente a variables en su aplicación utilizando opciones especiales. Estas opciones son variable, textvariable, onvalue, offvalue, y value. Esta conexión funciona en ambos sentidos: si la variable cambia por algún motivo, el widget al que está conectado se actualizará para reflejar el nuevo valor. En la implementación actual de tkinter no es posible entregar una variable arbitraria de Python.Las cuales esto funciona son variables que son subclases de la clase Variable, definida en tkinter.
Hay muchas subclases útiles de Variable ya definidas: StringVar, IntVar, DoubleVar, and BooleanVar. Para leer el valor actual de dicha variable, es necesario llamar al método get(), y para cambiar su valor, al método set(). Si se sigue, el widget siempre rastreará el valor de la variable, sin ser necesaria ninguna otra intervención.
El gestor de ventanas
En Tk hay un comando útil, wm, para interactuar con el gestor de ventanas. Las opciones del comando wm le permiten controlar cosas como títulos, ubicación, iconos de ventana y similares. En tkinter, estos comandos se han implementado como métodos de la clase Wm. Los widgets de alto nivel son subclases de Wm, por lo que se puede llamar directamente a los métodos de Wm. Para acceder a la ventana Toplevel que contiene un objeto gráfico dado, a menudo puede simplemente referirse al padre de este objeto gráfico. Si el objeto gráfico fue empaquetado dentro de un marco, el padre no representará la ventana de nivel superior. Para acceder a la ventana de nivel superior que contiene un objeto gráfico arbitrario, puede llamar al método _root() . Este método comienza con un subrayado para indicar que esta función es parte de la implementación y no de una interfaz a la funcionalidad Tk.
tipos de datos de opciones tk
anchor Los valores legales son los puntos de la brújula: "n", "ne", "e", "se", "s", "sw", "w", "nw", y también "center". bitmap Hay ocho nombres de bitmaps integrados: 'error', 'gray25', 'gray50', 'hourglass', 'info', 'questhead', 'question', 'warning'. Para especificar un nombre de archivo de mapa de bits de X, indique la ruta completa del archivo, precedida por una @, como en "@/usr/contrib/bitmap/gumby.bit". boolean Se puede pasar enteros 0 o 1 o las cadenas "yes" or "no". callback Esto es cualquier función de Python que no toma argumentos.
color Los colores se pueden dar como nombres de colores de X en el archivo rgb.txt, o como cadenas que representan valores RGB. La cadena que representa el valor RGB toma un rango de 4 bits:"#RGB", 8 bits: "#RRGGBB", 12 bits» "#RRRGGGBBB", o 16 bits "#RRRRGGGGBBBB" donde R, G, B representan cualquier dígito hexadecimal legal. Consulte la página 160 del libro de Ousterhout para más detalles.
cursor
Los nombres estándar del cursor X de cursorfont.h se pueden usar sin el prefijo XC_. distance Las distancias de pantalla se pueden especificar tanto en píxeles como en distancias absolutas. Los píxeles se dan como números y las distancias absolutas como cadenas con el carácter final que indica unidades: c para centímetros, i para pulgadas, m para milímetros, p para puntos de impresora. font
Tk usa un formato de lista para los nombres de fuentes, como {courier 10 bold}. Los tamaños de fuente expresados en números positivos se miden en puntos, mientras que los tamaños con números negativos se miden en píxeles.
tipos de datos de opciones tk
relief
Determina cuál será el estilo de borde de un widget. Los valores legales son: "raised", "sunken", "flat", "groove", y "ridge".
scrollcommand
Este es casi siempre el método set() de algún widget de barra de desplazamiento, pero puede ser cualquier método de un widget que tome un solo argumento.
wrap
Debe ser uno de estos: "none", "char", o "word".
geometry
Es una cadena de caracteres del estilo widthxheight, donde el ancho y la altura se miden en píxeles para la mayoría de los widgets (en caracteres para widgets que muestran texto). Por ejemplo: fred["geometry"] = "200x100".
justify
Los valores legales son las cadenas de caracteres: "left", "center", "right", y "fill".
region
Es una cadena de caracteres con cuatro elementos delimitados por espacios, cada uno de ellos es una distancia legal (ver arriba). Por ejemplo: "2 3 4 5" , "3i 2i 4.5i 2i" y "3c 2c 4c 10.43c" son todas regiones legales.
enlaces y eventos
El método de enlace (binding) del comando del widget le permite observar ciertos eventos y hacer que la función de devolución de llamada se active cuando se produce ese tipo de evento. La forma del método de enlace es:
donde: sequence es una cadena que denota el tipo de evento objetivo. func
es una función de Python que toma un argumento y se llama cuando ocurre el evento (esta manera a menudo se llaman callbacks.). add es opcional, ya sea '' o '+'. Pasar una cadena de caracteres vacía indica que este enlace anulará cualquier otro enlace asociado con este evento. Pasar '+' agrega esta función a la lista de funciones vinculadas a este tipo de evento.
el parametro de indice
Muchos widgets requieren que se pase un parámetro de tipo índice. Esto se utiliza para señalar ubicaciones específicas en el widget de texto, caracteres específicos en el widget de entrada, o elementos particulares en el widget de menú. Índice de widget de entrada (índice, índice de vista, etc.) El widget entrada tiene una opción para referirse a la posición de los caracteres del texto que se muestra. Puede acceder a estos puntos especiales en un widget de texto utilizando la siguiente función de tkinter: Índice de widget de texto La notación de índice del widget de texto es muy rica y se detalla mejor en las páginas del manual de Tk. Índices de menú (menu.invoke(), menu.entryconfig(), etc.) Algunas opciones y métodos para menús manipulan entradas de menú específicas. Cada vez que se necesita un índice de menú para una opción o un parámetro,
imagenes
Se pueden crear imágenes de diferentes formatos a través de la correspondiente subclase de tkinter.Image:
- BitmapImage para imágenes en formato XBM.
- PhotoImage para imágenes en formatos PGM, PPM, GIF y PNG. Este último es compatible a partir de Tk 8.6.
Cualquier tipo de imagen se crea a través de la opción file o data. El objeto imagen se puede usar siempre que algún widget admita una opción de image. En estos casos, Tk no mantendrá una referencia a la imagen. Cuando se elimina la última referencia de Python al objeto de imagen, los datos de la imagen también se eliminan, y Tk mostrará un cuadro vacío donde se utilizó la imagen.
gestor de archivos
Tk permite registrar y anular el registro de una función de devolución de llamada que se llamará desde el mainloop de Tk cuando la E/S sea posible en un descriptor de archivo. Solo se puede registrar un controlador por descriptor de archivo.
Esta función no está disponible en Windows. Dado que no se sabe cuántos bytes están disponibles para su lectura, no use métodos de BufferedIOBase o TextIOBase read() o readline(), ya que estos requieren leer un número predefinido de bytes. Para sockets, los métodos recv() o recvfrom() trabajan bien; para otros archivos, use lectura sin formato o os.read(file.fileno(), maxbytecount). Widget.tk.createfilehandler(file, mask, func) Registra la función callback gestor de archivos func. El argumento file puede ser un objeto con un método fileno() (como un archivo u objeto de socket), o un descriptor de archivo entero. El argumento mask es una combinación ORed de cualquiera de las tres constantes que siguen. La retrollamada se llama de la siguiente manera:
Widget.tk.deletefilehandler(file) Anula el registro de un gestor de archivos. tkinter.READABLE tkinter.WRITABLE tkinter.EXCEPTION Constantes utilizadas en los argumentos mask.
presentacion tkinder
nglsnchz202
Created on July 30, 2023
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Audio tutorial
View
Pechakucha Presentation
View
Desktop Workspace
View
Decades Presentation
View
Psychology Presentation
View
Medical Dna Presentation
View
Geometric Project Presentation
Explore all templates
Transcript
Presentación tkinter — Interface de Python para Tcl/Tk
nombre: alexa jazmin mata díaz especialidad: programación profesor:azael grupo:4205
Que es tkinder?
El paquete tkinter («interfaz Tk») es la interfaz por defecto de Python para el kit de herramientas de GUI Tk. Tanto Tk como tkinter están disponibles en la mayoría de las plataformas Unix, así como en sistemas Windows (Tk en sí no es parte de Python, es mantenido por ActiveState).
Índice
modelo de subprocesamiento
arquitectura
tipos de opciones tk
guia practica de configuracion de opciones
modulo stinker
enlaces y eventos
el empaquetador
modulo de soporte
el parametro de indice
opciones de empaquetador
progrma de ''hola mundo''
imagenes
asociacion de variables de widget
conceptos de tk
gestor de archivos
el gestor de ventanas
como lo hago y como funciona?
Arquitectura
Tcl/Tk no es una biblioteca única mas bien consiste en unos pocos módulos distintivos entre si. Tcl Tcl es un lenguaje de programación interpretado y dinámico, tal como Python. La librería TCL contiene una interfaz con C que crea y gestiona una o más instancias del intérprete de TCL. Cada intérprete tiene su cola de eventos y entrega facilidades para enviar procesos a la cola y procesarlos. El modelo de ejecución en Tcl es diseñado alrededor de cooperar en múltiples asignaciones y Tkinter ayuda a salvar estas diferencias. Tk Tk es un paquete de Tcl implementado en C que agrega comandos personalizados que permiten manipular widget en la GUI. Cada objeto de la clase Tk agrega su instancia de interprete Tcl con Tk cargado en el. Los widget de Tk son muy personalizables, aunque a costa de una apariencia anticuada. Tk usa eventos de la cola de Tcl para generar y procesar eventos de la GUI. Ttk El nuevo tema Tk (Ttk) es una nueva familia de widgets de Tk que proveen una mejor apariencia en diferentes plataformas mas que varios de los widgets clásicos de Tk. Ttk es distribuido como parte de Tk estando disponible a partir de la versión 8.5. Enlaces para Python son entregados en un módulo aparte, tkinter.ttk.
Modulo stinker
El soporte para Tkinter se distribuye para varios módulos.El cual entrega el conjunto de widget temáticos y la API correspondiente:
- ScreenName
Cuando se proporciona (como cadena de caracteres), establece la variable de entorno DISPLAY. (solo X11)
baseName Nombre del archivo de perfil. De forma predeterminada, baseName se deriva del nombre del programa (sys.argv[0]).Modulo stinker
Esto crea un widget de nivel superior de Tk que generalmente es la ventana principal de una aplicación. Cada instancia tiene su propio intérprete Tcl asociado. La clase Tk normalmente se instancia utilizando los valores predeterminados. No obstante, se reconocen los siguientes argumentos de palabra clave:
use Especifica el id de la ventana en la que se incrustar la aplicación, en lugar de crearla como una ventana independiente de nivel superior.
tk El objeto de la aplicación Tk creado al instanciar Tk. Esto proporciona acceso al intérprete de Tcl. Todos los widget que se adjuntan a la misma instancia de Tk tienen el mismo valor para el atributo tk.
master Los términos master y parent son similares al llamar a winfo_parent() este retorna una cadena con del nombre del widget, mientras que master retorna el objeto. parent/child refleja la relación en forma de árbol, mientras que master/slave, refleja la estructura del contenedor.children Los descendientes directos de este widget como dict con los nombres del widget secundario como clave y los objetos de instancia secundarios como valor.tkinter.Tcl(screenName=None, baseName=None, className='Tk', useTk=False) La función Tcl() es una función de fábrica que crea un objeto muy similar al creado por la clase Tk, excepto que no inicializa el subsistema Tk.
modulos de soporte
Módulos que proporcionan soporte a Tk:tkinter Módulos de Tkinter. tkinter.colorchooser Cuadro de diálogo que permite al usuario elegir un color. tkinter.commondialog Clase base para cuadros de diálogo definidos en los otros módulos listados aquí. tkinter.filedialog Cuadros de diálogo por defecto que permiten al usuario especificar un archivo para abrir o guardar. tkinter.font Utilidades para ayudar a trabajar con fuentes. tkinter.messagebox Acceso a cuadros de diálogo estándar de Tk.tkinter.scrolledtext Widget de texto con una barra de desplazamiento vertical integrada. tkinter.simpledialog Cuadros de diálogo simples y funciones útiles. tkinter.ttk Un set de widgets temáticos fueron añadidos en Tk 8.5, entregando alternativas modernas para muchos de los widgets clásicos en el módulo principal de tkinter.
Programa de ''hola mundo''
Comenzaremos a explorar Tkinter a través de una simple aplicación «Hola Mundo».
conceptos de tk
Incluso con este sencillo programa se pueden mostrar conceptos claves de Tk: widgets Una interfaz de usuario de Tkinter está compuesta de varios widgets individuales. Cada widget es representado como un objeto de Python, instanciado desde clases tales como ttk.Frame, ttk.Label y ttk.Button. jerarquía de los widgets Los widgets se organizan en jerarquías. La etiqueta y el botón estaban dentro del marco el que a su vez estaba contenido dentro del marco raíz. Cuando se crea cada child del widget su parent es pasado como el primer argumento del constructor del widget. opciones de configuración Los widgets tienen opciones de configuración los cuales modifican su apariencia y comportamiento, como el texto que se despliega en la etiqueta o el botón. Diferentes clases de widgets tendrán diferentes conjuntos de opciones. gestión del diseño de formularios Los widgets no son añadidos automáticamente a la interfaz de usuario una vez que han sido creados. Un administrador de geometrías como grid controla donde la interfaz de usuario es colocada. ejecución del evento Tkinter reacciona a la entrada del usuario, realiza los cambios del programa e incluso actualiza lo que se muestra en pantalla solo cuando se ejecuta activamente un event loop. Si el programa no esta ejecutando el evento, su interfaz de usuario no se actualizará.
¿Cómo lo hago?, ¿Cómo funciona?
Si no esta seguro sobre como realizar ciertas acciones en Tkinter y no se puede encontrar información de forma rápida.Para encontrar que opciones de configuración están disponibles en cada widget, se utiliza la llamada al método configure(), el cual retorna un diccionario que contiene una gran variedad de información sobre cada objeto, incluyendo valores por defecto y actuales. Utilice el keys() para saber los nombres de cada opción.
La mayoría de los widgets tienen varias opciones de configuraciones en común, puede ser útil averiguar cuales son específicos de una clase de widget en particular. Comparando la lista de opciones de un widget sencillo
De manera similar se pueden encontrar los métodos disponibles para un objeto de un widget utilizando la función standard dir(). Si lo intentas podrás ver alrededor de 200 métodos comunes para los widgets por lo que de nuevo, es muy importante identificar las especificaciones de un widget.
modelo de subprocesamiento
Python y Tcl/Tk tienen modelos de subprocesamiento muy diferentes, con lo cual el módulo tkinter intenta ser un puente entre ambos. Si usted usa hilos, es muy posible que deba ser consciente de esto. En Tcl, diferentes hilos pueden ser creados, pero cada hilo tiene una instancia del interprete de Tcl asociada por separado. Los hilos pueden crear mas de una instancia del interprete, aunque puede ser usada solo por el hilo que ha sido creado. Cada objeto de la clase Tk creado por tkinter contiene un interprete para TCL. Esto también mantiene un seguimiento de cada hilo creado por el interprete. Las llamadas al módulo tkinter De forma interna si una llamada proviene desde un hilo diferente al creado por objeto Tk, un evento es publicado por la cola de eventos del interprete y cuando es ejecutado, el resultado es retornado al hilo de llamadas de Python. Las aplicaciones de Tcl/Tk son normalmente basados en eventos, lo que significa que después de la inicialización, el interprete corre un bucle de eventos que responde a los eventos. Al ser un evento de un solo proceso, los controladores responden rápidamente, en caso contrario ellos bloquearán el procesamiento de otros eventos. Para evitar esto, cualquier procesamiento de larga duración no deben ser procesados en el controlador de eventos, o ser separados en pequeñas piezas usando temporizadores o correr el proceso en otro hilo. Si el intérprete de Tcl no se está ejecutando el bucle del evento o procesando eventos, cualquier llamada a tkinter realizada desde hilos distintos al que ejecuta el intérprete de Tcl, fallará.
Guía práctica Configuración de opciones
Las opciones controlan parámetros como el color y el ancho del borde de un widget. Las opciones se pueden configurar de tres maneras: En el momento de la creación del objeto, utilizando argumentos de palabras clave
Después de la creación del objeto, tratando el nombre de la opción como un índice de diccionario
Usando el método config() para actualizar múltiples atributos después de la creación del objeto
El empaquetador
El empaquetador es uno de los mecanismos de gestión de geometría de Tk. Los administradores de geometría se utilizan para especificar la posición relativa de los widgets dentro de su contenedor: su master mutuo.El tamaño de cualquier widget maestro está determinado por el tamaño del widget esclavo interno. El empaquetador se usa para controlar dónde se colocará el widget esclavo en el widget maestro de destino. Para lograr el diseño deseado, puede empaquetar el widget en un marco y luego empaquetar ese marco en otro. Además, una vez empaquetado, la disposición se ajusta dinámicamente de acuerdo con los cambios de configuración posteriores. Tenga en cuenta que los widgets no aparecen hasta que su geometría no se haya especificado con un administrador de diseño de pantalla. Se puede llamar al método pack() con pares palabra-clave/valor que controlan dónde debe aparecer el widget dentro de su contenedor y cómo se comportará cuando se cambie el tamaño de la ventana principal de la aplicación. Aquí hay unos ejemplos:
opciones del empaquetador
anchor Tipo de anclaje. Indica dónde debe colocar el empaquetador a cada esclavo en su espacio. expand Un valor booleano, 0 o 1. fill Los valores legales son: 'x', 'y', 'both', 'none'. ipadx y ipady Una distancia que designa el relleno interno a cada lado del widget esclavo. padx y pady Una distancia que designa el relleno externo a cada lado del widget esclavo. side Los valores legales son: 'left', 'right', 'top', 'bottom'.
asociacion de variables de widgets
La asignación de un valor a ciertos objetos gráficos se puede vincular directamente a variables en su aplicación utilizando opciones especiales. Estas opciones son variable, textvariable, onvalue, offvalue, y value. Esta conexión funciona en ambos sentidos: si la variable cambia por algún motivo, el widget al que está conectado se actualizará para reflejar el nuevo valor. En la implementación actual de tkinter no es posible entregar una variable arbitraria de Python.Las cuales esto funciona son variables que son subclases de la clase Variable, definida en tkinter. Hay muchas subclases útiles de Variable ya definidas: StringVar, IntVar, DoubleVar, and BooleanVar. Para leer el valor actual de dicha variable, es necesario llamar al método get(), y para cambiar su valor, al método set(). Si se sigue, el widget siempre rastreará el valor de la variable, sin ser necesaria ninguna otra intervención.
El gestor de ventanas
En Tk hay un comando útil, wm, para interactuar con el gestor de ventanas. Las opciones del comando wm le permiten controlar cosas como títulos, ubicación, iconos de ventana y similares. En tkinter, estos comandos se han implementado como métodos de la clase Wm. Los widgets de alto nivel son subclases de Wm, por lo que se puede llamar directamente a los métodos de Wm. Para acceder a la ventana Toplevel que contiene un objeto gráfico dado, a menudo puede simplemente referirse al padre de este objeto gráfico. Si el objeto gráfico fue empaquetado dentro de un marco, el padre no representará la ventana de nivel superior. Para acceder a la ventana de nivel superior que contiene un objeto gráfico arbitrario, puede llamar al método _root() . Este método comienza con un subrayado para indicar que esta función es parte de la implementación y no de una interfaz a la funcionalidad Tk.
tipos de datos de opciones tk
anchor Los valores legales son los puntos de la brújula: "n", "ne", "e", "se", "s", "sw", "w", "nw", y también "center". bitmap Hay ocho nombres de bitmaps integrados: 'error', 'gray25', 'gray50', 'hourglass', 'info', 'questhead', 'question', 'warning'. Para especificar un nombre de archivo de mapa de bits de X, indique la ruta completa del archivo, precedida por una @, como en "@/usr/contrib/bitmap/gumby.bit". boolean Se puede pasar enteros 0 o 1 o las cadenas "yes" or "no". callback Esto es cualquier función de Python que no toma argumentos.
color Los colores se pueden dar como nombres de colores de X en el archivo rgb.txt, o como cadenas que representan valores RGB. La cadena que representa el valor RGB toma un rango de 4 bits:"#RGB", 8 bits: "#RRGGBB", 12 bits» "#RRRGGGBBB", o 16 bits "#RRRRGGGGBBBB" donde R, G, B representan cualquier dígito hexadecimal legal. Consulte la página 160 del libro de Ousterhout para más detalles.
cursor Los nombres estándar del cursor X de cursorfont.h se pueden usar sin el prefijo XC_. distance Las distancias de pantalla se pueden especificar tanto en píxeles como en distancias absolutas. Los píxeles se dan como números y las distancias absolutas como cadenas con el carácter final que indica unidades: c para centímetros, i para pulgadas, m para milímetros, p para puntos de impresora. font Tk usa un formato de lista para los nombres de fuentes, como {courier 10 bold}. Los tamaños de fuente expresados en números positivos se miden en puntos, mientras que los tamaños con números negativos se miden en píxeles.
tipos de datos de opciones tk
relief Determina cuál será el estilo de borde de un widget. Los valores legales son: "raised", "sunken", "flat", "groove", y "ridge". scrollcommand Este es casi siempre el método set() de algún widget de barra de desplazamiento, pero puede ser cualquier método de un widget que tome un solo argumento. wrap Debe ser uno de estos: "none", "char", o "word".
geometry Es una cadena de caracteres del estilo widthxheight, donde el ancho y la altura se miden en píxeles para la mayoría de los widgets (en caracteres para widgets que muestran texto). Por ejemplo: fred["geometry"] = "200x100". justify Los valores legales son las cadenas de caracteres: "left", "center", "right", y "fill". region Es una cadena de caracteres con cuatro elementos delimitados por espacios, cada uno de ellos es una distancia legal (ver arriba). Por ejemplo: "2 3 4 5" , "3i 2i 4.5i 2i" y "3c 2c 4c 10.43c" son todas regiones legales.
enlaces y eventos
El método de enlace (binding) del comando del widget le permite observar ciertos eventos y hacer que la función de devolución de llamada se active cuando se produce ese tipo de evento. La forma del método de enlace es:
donde: sequence es una cadena que denota el tipo de evento objetivo. func es una función de Python que toma un argumento y se llama cuando ocurre el evento (esta manera a menudo se llaman callbacks.). add es opcional, ya sea '' o '+'. Pasar una cadena de caracteres vacía indica que este enlace anulará cualquier otro enlace asociado con este evento. Pasar '+' agrega esta función a la lista de funciones vinculadas a este tipo de evento.
el parametro de indice
Muchos widgets requieren que se pase un parámetro de tipo índice. Esto se utiliza para señalar ubicaciones específicas en el widget de texto, caracteres específicos en el widget de entrada, o elementos particulares en el widget de menú. Índice de widget de entrada (índice, índice de vista, etc.) El widget entrada tiene una opción para referirse a la posición de los caracteres del texto que se muestra. Puede acceder a estos puntos especiales en un widget de texto utilizando la siguiente función de tkinter: Índice de widget de texto La notación de índice del widget de texto es muy rica y se detalla mejor en las páginas del manual de Tk. Índices de menú (menu.invoke(), menu.entryconfig(), etc.) Algunas opciones y métodos para menús manipulan entradas de menú específicas. Cada vez que se necesita un índice de menú para una opción o un parámetro,
imagenes
Se pueden crear imágenes de diferentes formatos a través de la correspondiente subclase de tkinter.Image:
- BitmapImage para imágenes en formato XBM.
- PhotoImage para imágenes en formatos PGM, PPM, GIF y PNG. Este último es compatible a partir de Tk 8.6.
Cualquier tipo de imagen se crea a través de la opción file o data. El objeto imagen se puede usar siempre que algún widget admita una opción de image. En estos casos, Tk no mantendrá una referencia a la imagen. Cuando se elimina la última referencia de Python al objeto de imagen, los datos de la imagen también se eliminan, y Tk mostrará un cuadro vacío donde se utilizó la imagen.gestor de archivos
Tk permite registrar y anular el registro de una función de devolución de llamada que se llamará desde el mainloop de Tk cuando la E/S sea posible en un descriptor de archivo. Solo se puede registrar un controlador por descriptor de archivo.
Esta función no está disponible en Windows. Dado que no se sabe cuántos bytes están disponibles para su lectura, no use métodos de BufferedIOBase o TextIOBase read() o readline(), ya que estos requieren leer un número predefinido de bytes. Para sockets, los métodos recv() o recvfrom() trabajan bien; para otros archivos, use lectura sin formato o os.read(file.fileno(), maxbytecount). Widget.tk.createfilehandler(file, mask, func) Registra la función callback gestor de archivos func. El argumento file puede ser un objeto con un método fileno() (como un archivo u objeto de socket), o un descriptor de archivo entero. El argumento mask es una combinación ORed de cualquiera de las tres constantes que siguen. La retrollamada se llama de la siguiente manera:
Widget.tk.deletefilehandler(file) Anula el registro de un gestor de archivos. tkinter.READABLE tkinter.WRITABLE tkinter.EXCEPTION Constantes utilizadas en los argumentos mask.