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 страница 17
Métodos relacionados con el método anterior:
•winfo_rootx(). Devuelve la coordenada x del lado izquierdo de la ventana principal respecto de la pantalla del ordenador. Si tuviera un borde, haría referencia a su parte exterior.
•winfo_rooty(). Devuelve la coordenada y del lado superior de la ventana principal respecto de la pantalla del ordenador. Si tuviera un borde, haría referencia a su parte exterior.
•winfo_x(). Devuelve la coordenada x del lado izquierdo del widget respecto de la ventana principal (o widget contenedor). Si tuviera un borde, haría referencia a su parte exterior.
•winfo_y(). Devuelve la coordenada y del lado superior del widget respecto de la ventana principal (o widget contenedor). Si tuviera un borde, haría referencia a su parte exterior.
•winfo_width(). Devuelve el ancho del widget. Si el objeto sobre el que se invoca es de la clase Tk, corresponderá al ancho de la ventana principal.
•winfo_height(). Devuelve el alto del widget. Si el objeto sobre el que se invoca es de la clase Tk, corresponderá al alto de la ventana principal.
En caso de querer obtener el ancho y el alto establecido con las opciones width y height de un widget, deberá usar los métodos winfo_ reqwidth() y winfo_reqheight(), respectivamente. Como el gestor de geometría lo ajustará para encajarlo con el resto de los widgets que se muestran en la ventana principal (o widget contenedor), dichos valores no tienen por qué ser los mismos que los asignados a dichas opciones.
Si lo que desea conocer es el tamaño de la pantalla del ordenador, llame a los métodos:
•winfo_screenwidth(). Devuelve el ancho de la pantalla en píxeles.
•winfo_screenheight(). Devuelve el alto de la pantalla en píxeles.
El último grupo de métodos devuelve las coordenadas del ratón:
•winfo_pointerxy(). Devuelve una tupla que contiene las coordenadas del ratón respecto de la pantalla de su ordenador (no respecto de la ventana principal).
•winfo_pointerx(). Devuelve el valor x de la tupla anterior.
•winfo_pointery(). Devuelve el valor y de la tupla anterior.
Para practicar con algunos de estos métodos, especialmente los relacionados con la posición del ratón, en esta última práctica va a mostrar las coordenadas de su posición dentro de la ventana principal. Fuera de ella, aparecerá el valor −1, −1.
El código del programa es el siguiente:
En la primera sentencia, se importa la clase Tk para crear la ventana principal y Label para mostrar las coordenadas del ratón:
Las siguientes sentencias, de sobra conocidas por usted, crean la ventana principal (root), a la que se asigna un tamaño de 400 × 200 píxeles, además de la etiqueta (etiqueta), con la que se mostrarán las coordenadas del ratón en el centro de la ventana:
Por último, se llama a la función responsable de presentar la posición del ratón en todo momento:
En ella, lo primero que se hace es obtener la información necesaria para calcular las coordenadas del ratón relativas a la ventana principal (no hay ninguna función que la proporcione directamente). Para ello, en las variables x e y se almacenan las coordenadas del ratón respecto de la pantalla del ordenador. Por su parte, root_x y root_y contendrán las coordenadas de la esquina superior izquierda de la ventana principal, también respecto de la pantalla del ordenador:
Con la información anterior, las coordenadas x, y del ratón relativas a la ventana principal se calculan como:
Por último, las variables ancho_pantalla y alto_pantalla guardarán el ancho y alto de la ventana principal (recuerde que puede redimensionarse):
La sentencia if que viene a continuación se utiliza para mostrar el valor “−1, −1” cuando el ratón se encuentre fuera de la ventana, en cuya condición se utiliza el ancho y alto de la ventana principal, obtenido anteriormente:
Una vez conocidas las coordenadas del ratón relativas a la ventana principal (mouse_x y mouse_y), se muestran en la etiqueta modificando la opción text con el método configure():
Por último, transcurridos 10 milisegundos, se vuelve a ejecutar esta función para mostrar la nueva posición en la que pudiera encontrarse el ratón. Para ello, se hace uso del conocido método after():
Observe un ejemplo de lo que vería cuando ejecutara el programa, situando el ratón en la parte inferior derecha de la ventana:
Aunque mueva o modifique el tamaño de la ventana principal, el programa seguirá funcionando correctamente.
Unidad 6
VARIABLES DE CONTROL
Las variables de control son un tipo especial de variables, que se asocian a ciertos widgets para almacenar valores de entrada o visualización de información. Un ejemplo del primer caso serían los datos introducidos por el usuario en un campo de entrada de texto. Dichos datos quedarían a disposición del programa cuando fueran necesarios. Otro ejemplo, en este caso de visualización de información, sería el texto mostrado por una etiqueta, que cambiaría al modificarse el valor de la variable de control que tuviera asociada.
En el caso de las etiquetas, otra forma de modificar el texto que contienen es asignando el nuevo texto a la opción text con el método configure(), tal como ha podido comprobar en una práctica anterior.