ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

30-AGREGUEMOS BOTONES Y LAS FUNCIONES CALL BACKS


Enviado por   •  26 de Marzo de 2017  •  Documentos de Investigación  •  1.599 Palabras (7 Páginas)  •  229 Visitas

Página 1 de 7

30-AGREGUEMOS BOTONES Y LAS FUNCIONES CALL BACKS

Hemos visto hasta aquí ejemplos sencillos, a los cuales en esta parte le agregaremos botones y por supuesto debe haber alguna función que se dispara cuando se clickea el botón  y se ejecuta ese código, las funciones  que se disparan y ejecutan mediante cierto evento como en este caso, son llamadas callbacks.

[pic 1]

Aquí vemos que el formato es similar a cuando agregábamos un Label, solo que aquí instanciamos en la clase Button, a la misma se le debe pasar el parent que en este caso es None, pero ya sabemos que el sistema usara por default Tk, luego le pasamos el texto del botón y al final le pasamos en el argumento command, el nombre de la función que se ejecutara al apretarlo, en este caso sys.exit así que al apretar el botón se cerrara.

Al ejecutarlo..

[pic 2]

Al apretar el botón  se cierra, si en lugar de colocar sys.exit hubiéramos definido una función en algún lugar y puesto su nombre en el argumento command, al apretar el botón se ejecutaría la misma.

Vemos que para los Botones, la opción command es el lugar donde especificamos la función callback que manejara el evento que se produce al apretarlo, en este ejemplo la función callback no es muy interesante ya que sys.exit solo cierra el programa, pero ya veremos ejemplos de otras funciones callback mas interesantes.

En este ejemplo siguiente usaremos la instanciación implicita que como vimos en la parte anterior se puede usar, siempre que no asignemos el resultado del método pack() a una variable que luego usemos como instancia, en este caso se usa en forma correcta.

[pic 3]

Vemos que en este caso instanciamos root en la parent Tk(), lo cual sabemos que no es necesario en este caso, ya que se usa por default pero es para demostrar, lógicamente cuando instanciamos en forma implicita en la clase Button, el primer parámetro debe ser la instancia en el proceso parent, por eso le pasamos root, luego el texto del botón, luego el comando que en este caso sera el método quit() que se le puede aplicar a la instancia root y que cerrara el programa, y luego a todo ellos se le aplica el método pack(), pasandole como argumento side=LEFT con lo cual colocara el botón a la izquierda de la ventana, veamos como se ve.

 

[pic 4]

Allí vemos el botón colocado en el lado izquierdo al apretarlo se cierra el programa ya que la instancia root de la clase Tk(), tiene un método quit(), que sale del programa y es similar a sys.exit.

EXPANSION Y LLENADO

Como vimos en la parte anterior con las Labels, ahora revisitaremos el tema de expansión y llenado mediante los comandos expand y fill, en el caso de los botones es mucho mas claro como funciona cada opción,  en el mismo codigo del ejemplo anterior reemplazaremos side=LEFT

[pic 5]

En el primer caso lo reemplazamos por side=LEFT, expand=YES

[pic 6]

Vemos que luego de ubicarlo a la izquierda el comando expand=YES centrara el boton sea cual sea el tamaño de la ventana, luego EXPAND=YES pisara a  LEFT , y le dice que lo  centre siempre,  si  expandimos la ventana.

[pic 7]

Vemos que el botón se centrara sea cual sea el tamaño, mientras que cuando expandíamos el original que solo tenia como opción side=LEFT.

[pic 8]

Vemos que el botón no se centraba, por lo tanto vemos que la opcion expand, lo que hara sera centrar el botón sea cual sea el tamaño de la ventana principal, ahora probamos con side=LEFT, expand=YES, fill=X

[pic 9]

Vemos que el botón ademas de estar centrado por expand ahora llena todo el espacio disponible, si lo estiramos como le pusimos fill=X que significa que llene todo en sentido horizontal o de las coordenadas X  lo que hara es esto.

[pic 10]

Si le hubiéramos puesto fill=Y llenaría el botón hasta el máximo en el sentido de las coordenadas verticales Y.

Y si queremos que se expanda en ambos sentidos X e Y habra que usar el parametro BOTH que lo expandirá en todas direcciones.[pic 11]

[pic 12]

Allí lo vemos al estirar la ventana principal se agrandara el botón hasta el máximo posible en ambos sentidos horizontal y vertical.

Mas adelante veremos el funcionamiento de la expansión cuando hay varios diferentes widgets en una misma ventana y como se acomodan en esos casos.

AGREGANDO FUNCIONES CALLBACK DEFINIDAS POR EL USUARIO

El siguiente paso es definir funciones callback definidas por nosotros mismos, para hacer algo mas usable, veamos el ejemplo.

[pic 13]

Este caso es similar, solo que en vez de usar una función predefinida, definimos una función quit() que antes de cerrar el programa imprimirá un mensaje de despedida

[pic 14]

Aquí lo ejecute desde una consola, para ver que al apretar el botón antes de cerrarse imprime el mensaje en ella.

[pic 15]

Allí esta funciono, al apretar el botón se disparo la función callback que maneja el evento y imprimió el mensaje y salio del programa.

En este ejemplo la salida se mostró en la consola aunque podría la función haber desplegado otras ventanas hijas, de mensaje, o hacer cualquier cosa que nos plazca, solo el ejemplo sirve para demostrar que se puede llamar a una función propia que haga lo que queremos.

...

Descargar como (para miembros actualizados)  txt (9.5 Kb)   pdf (544.2 Kb)   docx (126.5 Kb)  
Leer 6 páginas más »
Disponible sólo en Clubensayos.com