#!/usr/bin/env python# -*- coding: utf-8 -*-## Importa las librerías a usarimport pygtk# Revisa la versión requerida para usarpygtk.require('2.0')# Importa otra librería que se usaráimport gtk
# Se crea la clase "Base" que se usaráclass Base:# Se define la función con la cual se sale de la aplicacióndef salir(self, widget, data=None):# gtk.main_quit sale sel ciclo gtk.main y termina la aplicacióngtk.main_quit()
# Se define la función para iniciar con la aplicacióndef login(self):# ven_ent se inicializa como una ventana de gtk del nivel superiorven_ent = gtk.Window(gtk.WINDOW_TOPLEVEL)# Se conecta el evento "delete_event" a la función "salir"ven_ent.connect("delete_event", self.salir)# Se dimensiona la ventana en pixeles (ancho, alto)ven_ent.set_size_request(225,95)# Se establece el título de la ventanaven_ent.set_title("Acceso de Usuarios")# Se establece la ventana como "modal" para prevenir multiples interacciones desde la misma ventanaven_ent.set_modal(True)# Se establece la ventana para no cambiar de tamañoven_ent.set_resizable(False)# Se ubica la ventana en las coordenadas de la pantalla (X,Y)ven_ent.move(500,300)# Se crea una caja vertical, el primer parámetro de gtk.VBox es si es homogeneo, es decir,# del mismo tamaño los widgets contenidos, el segundo parámetro es el espacio vertical# entre sus widgetsbox1 = gtk.VBox(False, 3)# Se agrega la caja a la ventanaven_ent.add(box1)# Se crea un caja horizontal, semejante al anteriorct1 = gtk.HBox(True, 0)# Se crea la etiquetalb_name = gtk.Label("Nombre")# Se muestra la etiquetalb_name.show()# Se empaca la etiqueta a la caja horizontal con "pack_start";# el primer argumento es el objeto a empacar, en este caso la# etiqueta, el segundo argumento es expand, si es True los controles# ocupan todo el espacio disponible, si es False sólo lo que requiere;# el tercer argumento es fill, si es True el espacio extra se usa en# los mismos controles, si es False queda como espacio extra; el# cuarto argumento es el espacio entre controles a la hora de empaquetarlosct1.pack_start(lb_name, True, True, 3)# Se crea una caja de entrada donde recibiremos datos del usuarioeb_name = gtk.Entry()# Se muestra la caja de entradaeb_name.show()# Se empaqueta la caja de entrada, semejante a la anteriorct1.pack_start(eb_name, True, True, 3)# Se empaqueta la caja horizontal en la caja vertical, semejante a las anteriores;# con esto se terminan los controles horizontales, los siguientes controles# que se añadan tendrán un "salto de linea" por así decirlo, es decir, pasan# al siguiente espacio verticalbox1.pack_start(ct1, True, True, 3)# Se crea otra caja horizontal, semejante a las anterioresct2 = gtk.HBox(True, 0)# Se crea la etiquetalb_passw = gtk.Label("Clave")# Se muestra la etiquetalb_passw.show()# Se empaqueta la etiqueta semejante a las anterioresct2.pack_start(lb_passw, True, True, 3)# Se crea la caja de entrada, semejante a la anterioreb_passw = gtk.Entry()# Se establece la visibilidad de los datos de la caja de entrada;# si es True, los caracteres son mostrados normalmente, si es False# muestra asteriscos o círculos o no muestra nada, segun se especifique# con set_invisible_char(ch)eb_passw.set_visibility(False)# Se muestra la caja de entradaeb_passw.show()# Se empaqueta la caja de entrada, semejante a la anteriorct2.pack_start(eb_passw, True, True, 3)# Se empaqueta la caja horizontal en la caja vertical, semejante a las anteriores;# con esto se genera que los siguientes controles pasen al siguiente espacio verticalbox1.pack_start(ct2, True, True, 3)# Se crea otra caja horizontal más, semejante a las anterioresct3 = gtk.HBox(True, 0)# Se crea un botón con la etiqueta integrada "Aceptar"bt_aceptar = gtk.Button("Aceptar")# Se conecta la señal "clicked" a la función "salir"bt_aceptar.connect("clicked", self.salir)# Se muestra el botónbt_aceptar.show()# Se empaqueta el botón en la caja horizontal, semejante a las anterioresct3.pack_start(bt_aceptar, True, True, 3)# Se crea otro botón con la etiqueta integrada "Cancelar"bt_cancelar = gtk.Button("Cancelar")# Se conecta la señal "clicked" a la función "salir"bt_cancelar.connect("clicked", self.salir)# Se muestra el botónbt_cancelar.show()# Se empaqueta el botón en la caja horizontal, semejante al anteriorct3.pack_start(bt_cancelar, True, True, 3)# Se empaqueta la caja horizontal en la caja vertical, semejante a las anteriores;# con esto se genera que los siguientes controles pasen al siguiente espacio verticalbox1.pack_start(ct3, True, True, 5)# Se muestra la caja horizontal 1ct1.show()# Se muestra la caja horizontal 2ct2.show()# Se muestra la caja horizontal 3ct3.show()# Se muestra la caja verticalbox1.show()# Se muestra la ventanaven_ent.show()# Se define la función "__init__" que es el inicio de la aplicación desde el ciclo gtk.maindef __init__(self):# Se llama a la función "login", nuestro verdadero inicio de la aplicaciónself.login()# Se define la función "main", que será el inicio de la aplicación desde pythondef main(self):# Se llama al ciclo principal de gtk.maingtk.main()
if __name__ == "__main__":base = Base()base.main()
jueves, 2 de diciembre de 2010
Como programar una ventana de acceso en pygtk
Pues bien, mi nuevo experimento fue crear una ventana de acceso a usuarios, es decir, que pregunte el nombre de usuario y su contraseña; igualmente nada tan elaborado, pero significó un gran avance para mí en la comprensión de pygtk. En esta ocasión quise documentar un poco más para que fuera más entendible el código, que de igual forma, pueden descargar de aquí o verlo a continuación:
Suscribirse a:
Comentarios de la entrada (Atom)
No hay comentarios.:
Publicar un comentario