Desarrollo de interfaces gráficas en Python 3 con Tkinter. Tomás Domínguez Mínguez

Чтение книги онлайн.

Читать онлайн книгу Desarrollo de interfaces gráficas en Python 3 con Tkinter - Tomás Domínguez Mínguez страница 10

Desarrollo de interfaces gráficas en Python 3 con Tkinter - Tomás Domínguez Mínguez

Скачать книгу

se asigna el valor "center" al atributo anchor:

illustration

      Ejecute el programa y observe el resultado obtenido:

illustration

      El problema viene cuando se cambia el tamaño de la ventana. En ese caso, la etiqueta se mantendrá fija en las mismas coordenadas (100, 100), y dejará de estar centrada:

illustration

      Para resolverlo, puede evitar que el usuario modifique las dimensiones de la ventana con el método resizable(), o utilizar las opciones relx y rely (en vez de x e y) en el método place(). De esa forma, la posición de la etiqueta será relativa al tamaño de la ventana (no absoluta). Así, cuando la ventana se redimensione, la etiqueta seguirá estando centrada (en la misma posición relativa).

      Por lo tanto, sustituya la sentencia

illustration

      por:

illustration

      Vuelva a ejecutar el programa. Tal como se acaba de comentar, ahora la etiqueta aparecerá centrada, independientemente de las dimensiones de la ventana:

illustration illustration

      Se desaconseja el uso de este gestor de geometría (salvo en casos excepcionales), ya que requiere especificar la posición absoluta de cada elemento. Cualquier cambio posterior supondría rehacer de nuevo toda la interfaz.

      Unidad 4

       OPCIONES COMUNES

      En Tkinter, el aspecto de un widget se describe a través de una serie de características; algunas son específicas y otras son compartidas por muchos widgets. Estas características comunes son las siguientes:

      •Dimensiones: height, width, bd, borderwidth, border, padx, pady y highlightthickness.

      •Color: background (bg), activebackground, activeforeground, disabledbackground, disabledforeground, foreground (fg), highlightbackground y highlightcolor.

      •Fuente del texto: font.

      •Foco: takefocus.

      •Posición: anchor.

      •Relieve: relief.

      •Imágenes: bitmap, image y compound.

      •Cursor del ratón: cursor.

      Para asignar un valor a cualquiera de estas características, se utilizan keyword arguments. Como seguramente sepa, los argumentos de una función pueden ser de tipo positional o keyword. En el primer caso (el que estará acostumbrado a usar), cada argumento se identifica por su posición al invocar la función (o método); es decir, son posicionales.

      Los argumentos de tipo keyword van precedidos de su nombre, por lo que podrán ocupar cualquier posición. Esto es especialmente útil cuando hay muchos argumentos opcionales, como en el caso de la mayoría de los widgets.

illustration

      A las características también se las llama “opciones”, incluso “atributos”. Esta última acepción debe entenderse en el sentido general del término, es decir, como un rasgo o cualidad del widget (y no como lo que se entiende en Python como atributo de una clase).

      Veamos en detalle cada uno de estos grupos.

      Las primeras opciones que estudiará son las relacionadas con las dimensiones de diversas características de un widget, entre las que destacan:

      •bd, borderwidth o border. Ancho del borde utilizado para dar un aspecto tridimensional al widget.

      •height. Altura del widget. Dependiendo de su tipo, podrá ser un número de píxeles o líneas.

      •highlightthickness. Ancho del rectángulo que aparece alrededor del widget cuando tiene el foco.

      •padx. Espacio adicional, interno a los límites del widget, que se le añade horizontalmente.

      •pady. Espacio adicional, interno a los límites del widget, que se le añade verticalmente.

      •width. Ancho del widget. Dependiendo de su tipo, podrá ser un número de píxeles o caracteres.

illustration

      Cuando una opción tiene varios nombres, tenga en cuenta que puede haber widgets que solo admitan uno de ellos.

illustration

      Si el valor de una dimensión se especifica como un número seguido del carácter ‘c’, se estará especificando en centímetros; si se usa el carácter ‘m’, en milímetros; mientras que ‘i’ hará referencia a pulgadas (inches en inglés).

      En la primera práctica que realizará con este tipo de atributos comunes, modificará el programa ¡Hola Mundo! inicial para no tener que añadir los retornos de carro ni los espacios antes y después del texto, con el fin de evitar que este quede pegado a los bordes de la ventana. Su código ahora es el siguiente:

illustration

      Como puede observar, el único cambio está en el constructor de la clase Label, ya que ahora se utilizan los atributos padx y pady para añadir un espacio adicional de 10 píxeles alrededor de la etiqueta:

illustration

      Ejecute el programa y observe que el resultado es similar al utilizado de base.

      El segundo bloque de atributos tiene que ver con el color. Tkinter representa los colores con cadenas. Hay dos formas de especificarlos:

      •Por su nombre en inglés: "white", "black", "red", "green", "blue", "cyan", “yellow", “orange", y "magenta". Dependiendo de su instalación, podría disponer de otros adicionales.

      •Indicando la intensidad de los colores rojo, verde y azul en dígitos hexadecimales.

Скачать книгу