onLoad y GTK

camontuyu camontuyu en yahoo.es
Mie Jul 19 20:53:20 CEST 2006


OK,

esa es la forma de crear un dialogo, pero yo quiero que se muestre
cuando se halla mostrado la ventana principal y mientras está este
dialogo realizar una serie de operaciones. El código que tengo sería
así.

def main(self):
	""" Ejectua la aplicación """
	# creamos el dialogo de cargar
	d = DialogoConectar()
	d.show()
	
	[Operaciones costosas]

	d.hide()

	gtk.main()

con lo que no muestra nada hasta que no terminan las operaciones.

Creando este código me ha surgido otra cuestión, ¿como puedo heredar de
un widget creando con el glade?

class DialogoConectar(gtk.Dialog):
	def __init__(self):
		gtk.Widget.__init__(self)
		
		interfaz = gtk.glade.XML(defines.BASE_INTERFAZ, 'dialogConectar')
		interfaz.signal_autoconnect(self)
		
		self = interfaz.get_widget('dialogConectar') 		
			
	def on_windowMain_destroy(self, ventana):
		print "saliendo del dialogo!"


Supongo que lo que he puesto es una burrada, pero puede ser orientativo
para ver si van por ahy los tiros.

Que me aconsejais?


El mié, 19-07-2006 a las 13:02 +0200, Arnau Sanchez escribió:
> camontuyu escribió:
> 
> > Como podría hacer que después de que se cargase el formulario principal,
> > este lanzase un dialogo modal para por ejemplo mostrar un progreso?
> > (teniendo el formulario principal del fondo) ??
> 
> Se puede hacer de dos formas:
> 
> 1) Creando el widget a mano (un dialog, por ejemplo), y llenándolo con los otros 
> widgets que necesites. Ejemplo patatero:
> 
> dialog = gtk.Dialog("Dialogo", main_app_window, gtk.DIALOG_MODAL | 	 
> gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_CLOSE, gtk.RESPONSE_ACCEPT))
> 
> # usa mejor una función que lambda, pero lo pongo así para que quede compacto
> dialog.connect("response", lambda widget, response: widget.destroy())
> vbox = gtk.VBox(False, 5)
> label = gtk.Label("Esto aparece encima de la barra de progreso")
> progress = gtk.ProgressBar()
> #progress.set_text("progreso")
> #progress.set_fraction(0.1)
> vbox.add(label)
> vbox.add(progress)
> dialog.vbox.add(vbox)
> dialog.show_all()		
> 
> (cuando quieras cerrar el dialogo: dialog.destroy())
> 
> 2) Creando el widget con glade (actívale la opción "modal" a esa ventana) y 
> haciéndole un show() cuando quieras que se vea. Parece más fácil, pero esta 
> opción también tiene sutilezas, si el usuario cierra la ventana se generará un 
> destroy() y no podrá volver a usarse. Para evitarlo, debes capturar la señal 
> "delete-event", y allí hacer un hide() del widget y un "return True"; con esto 
> último le avisas a gtk que no quieres que destruya el widget, y entonces sí 
> podrás volver a abrirlo.
> 
> ...
> 
> Hacer una barra de progreso implica seguramente tener tareas en segundo plano, 
> lo que ya te decía que pueder ser complejo si son tus primeros pasos en pygtk, 
> pero en fin, suerte.
> 
> Si la tarea que se asocia a la barra de progreso tiene algo que ver con la 
> lectura de ficheros/sockets, te puede ser útil esto:
> 
> file:///usr/share/doc/python-gtk2-doc/html/gobject-functions.html#function-gobject--io-add-watch
> 
> arnau
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es


		
______________________________________________ 
LLama Gratis a cualquier PC del Mundo. 
Llamadas a fijos y móviles desde 1 céntimo por minuto. 
http://es.voice.yahoo.com
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


Más información sobre la lista de distribución Python-es