[Python-es] como agregar widgets a un gtk.hbox despues de llamar a gtk.main()???
xiao xiong mao panda rojo
ailurus.fulgens en hotmail.com
Mar Sep 4 04:02:43 CEST 2012
lo siento olvide poner asunto
From: ailurus.fulgens en hotmail.com
To: python-es en python.org
Subject:
Date: Mon, 3 Sep 2012 20:50:17 -0500
hola a todos
ya les había mencionado antes intentaba agregar botones e un gtk.hbox con la ventana funcionando y tenia problemas
haciendo mas pruebas encontré algo curioso
hice dos ejemplos para mostrarles
en el primero tengo un botón para cambiar una imagen insertada por otra, funciona, borra una imagen y pone otra en su lugar
en el segundo intento hacer lo mismo pero no funciona. no puedo agregar la imagen y quitarla. puedo borrar botones pero no poner nuevos
los ejemplos son casi iguales, no veo la razón por la que uno falla
en el primero ya hay una imagen insertada, la retiro le cambio el archivo de imagen y la pongo otra ves, todo bien
en el segundo ejemplo esto se ve mejor, puedo retirar los objetos que declare en el constructor, y volverlos a poner, tanto en botones como imágenes
pero si intento agregar una imagen o botón nuevo, estos no aparecen, no recibo mensajes de error
estuve batallando hasta darme cuenta d eso XD
el problema es solo con los widgets que no estaban ahí antes de llamar a gtk.main()
alguien sabe como hago k aparezcan esos botones?
por cierto, gracias a la comunidad k siempre ayuda en lo k esta a su alcance
ejemplo 1
#!/usr/bin/env python
import sys
import gobject
import pango
# Dirty path adjustment to look for pygtk 2.9 instead of pygtk 2.8
# This needs pygtk 2.9 installed.
sys.path[:0] = ['/usr/local/lib/python2.4/site-packages/gtk-2.0']
import pygtk
pygtk.require('2.0')
import gtk
from gtk import gdk
win = gtk.Window()
image = gtk.Image()
hbox0=gtk.HBox(False,0)
def cambio(event):
hbox0.remove(image)
image.set_from_file("zorrita.png")
hbox0.pack_start(image)
def main(args):
#win = gtk.Window()
def mapeoteclas(self,event,data=None):
#print event.keyval
vbox1.set_visible(not vbox1.get_visible())
if event.keyval == gtk.keysyms.Escape:
gtk.main_quit()
win.set_title("PandaViwer")
win.connect('delete-event', gtk.main_quit)
win.connect("destroy",gtk.main_quit)
win.add_events(gdk.BUTTON_PRESS_MASK)
win.connect("key_release_event", mapeoteclas)
image.set_from_file("red.jpg")
image.show()
btn1 = gtk.Button(" x ")
btn1.connect("clicked",gtk.main_quit)
btn2 = gtk.Button("cambio")
btn2.connect("clicked",cambio)
#hbox0=gtk.HBox(False,0)
vbox1=gtk.VBox(False,0)
vbox1.pack_start(btn1,False,False,10)
vbox1.pack_start(btn2,False,False,10)
hbox0.pack_end(vbox1,False,False,10)
hbox0.pack_start(image)
win.add(hbox0)
win.show_all()
gtk.main()
return True
if __name__ == '__main__':
sys.exit(main(sys.argv))
ejemplo 2
#!/usr/bin/env python
import sys
import gobject
import pango
from twisted.python._epoll import PRI
sys.path[:0] = ['/usr/local/lib/python2.4/site-packages/gtk-2.0']
import pygtk
pygtk.require('2.0')
import gtk
from gtk import gdk
import cairo
if gtk.pygtk_version < (2,9,0):
print "PyGtk 2.9.0 or later required"
raise SystemExit
supports_alpha = False
win = gtk.Window()
hbox = gtk.HBox(False,0)
vbox = gtk.VBox(False,0)
Quitar = gtk.Button("quitar")
imagen = gtk.Image()
imagen.set_from_file("folder.png")
nuevo1 = gtk.Button("nuevo1")
def ejemplo(widget,event,data="....."):
print data
def quitar(event):
hbox.remove(Quitar)
def agregar(event):
hbox.pack_start(Quitar,False,False,0)#este si funciona
hbox.pack_start(nuevo1,False,False,0)#aqui es donde no agrega nada
nuevo2 = gtk.Button("nuevo2")
hbox.pack_start(nuevo2,False,False,0)
print "agregado"
def quitarimagen(event):
vbox.remove(imagen)
def agregarimagen(event):
vbox.pack_start(imagen,False,False,0)#aqui es donde no agrega nada
imagen2 = gtk.Image()
imagen2.set_from_file("info.xpm")
vbox.pack_start(imagen2,False,False,0)
print "agregada imagen"
def main(args):
win.set_title('Alpha Demo')
win.connect('delete-event', gtk.main_quit)
win.add_events(gdk.BUTTON_PRESS_MASK)
win.set_default_size(920,460)
Agregarimagen = gtk.Button("agregar imagen")
Agregarimagen.connect("clicked",agregarimagen)
Quitarimagen = gtk.Button("quitar imagen")
Quitarimagen.connect("clicked",quitarimagen)
hbox.pack_start(Agregarimagen,False,False,20)
hbox.pack_start(Quitarimagen,False,False,20)
Agregar = gtk.Button("agregar")
Agregar.connect("clicked",agregar)
hbox.pack_start(Agregar,False,False,20)
#Quitar = gtk.Button("quitar")
Quitar.connect("clicked",quitar)
hbox.pack_start(Quitar,False,False,20)
#vbox = gtk.VBox(False,0)
vbox.pack_start(hbox,False,False,0)
vbox.pack_start(imagen,False,False,0)
win.add(vbox)
win.show_all()
gtk.main()
return True
if __name__ == '__main__':
sys.exit(main(sys.argv))
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20120903/d6b70a9c/attachment.html>
Más información sobre la lista de distribución Python-es