#! /usr/bin/env python import gtk, os class princ: def __init__(self): self.win1 = gtk.Window() self.but1 = gtk.Button('Boton 1') self.but2 = gtk.Button('Boton2') self.hb = gtk.HBox() self.win1.add(self.hb) self.hb.pack_start(self.but1) self.hb.pack_start(self.but2) self.but1.connect('focus-in-event', self.but1_focus) self.but2.connect('focus-in-event', self.but2_focus) self.win1.connect('destroy', gtk.main_quit) self.win1.show_all()
def but1_focus(self, widget, b): print 'Boton 1 en foco' def but2_focus(self, widget, b): print 'Boton 2 en foco' princ() gtk.main() esto hace algo muy parecido a lo que buscas, te recomiendo que vayas probando señales hasta que encuentres lo que buscas (focus-in-event es una señal de GtkWidget, si te interesa) El 4 de marzo de 2011 16:12, manuel <lalo_americ...@hotmail.com> escribió: > Hola. > > Gracias por la respuesta, pero en lo que se refiere a los botones, creo que > sería algo un poco más complicado. > > Explico. > > Como el programa está pensado para que se pueda utilizar por una persona > ciega sin tener que usar ningún tipo de ayuda técnica, necesito hacer que el > programa me pueda decir cuando el foco del teclado está en un botón, la > función enter funcionaba pero con el mouse creo, ya que al intentar probarlo > para la reproducción del sonido no hace el efecto deseado, el efecto final > es que cuando yo pulse la flecha, hacia la derecha por ejemplo llegue al > botón que dice salir, y que con un método o una señal(había escuchado algo > acerca de una tal gtk.gdk.focus_changed pero no sé si exista o esté mal > escrita) lo pueda conectar a una función que hará que pygame.mixer.sound > reprodusca un sonido de una voz grabada con la palabra salir, así un ciego > puede escuchar el menú, pero sería poco práctico que para poder saber el > nombre del botón se tenga que pulsar dicho botón. > > Lo de las ventanas no se me había ocurido, pensaba que había otro método o > algo así, gracias. > > Saludos > > El 04/03/11 11:27, craf escribió: > > --------- Mensaje reenviado -------- > > De: manuel <lalo_americ...@hotmail.com> <lalo_americ...@hotmail.com> > Reply-to: La lista de python en castellano <python-es@python.org> > <python-es@python.org> > Para: La lista de python en castellano <python-es@python.org> > <python-es@python.org> > Asunto: [Python-es] Ayuda con PYGTK > Fecha: Fri, 4 Mar 2011 08:40:22 -0600 > > Hola. > > Soy nuevo usuario de la lista y ya tengo dos preguntas, espero y no sean > demaciado tontas, pero espero y me puedan ayudar ya que no pude > encontrarlo mucho por otros lados. > > Las cosas van sobre PYGTK. > > Lo que pasa es que estoy haciendo la parte gráfica de una aplicación que > un compañero programó, lo que tengo que hacer solamente es crear el menú > gráfico que sirva de acceso a las aplicaciones y pues he decidido usar > PYGTK sobre GNU/Linux ya que soy ciego y las librerías GTK+ conectan con > las de accesibilidad(AT-SPI) a diferencia de las qt o java(java tiene su > propio toolkit, pero no es muy bueno). > > Lo que quisiera hacer es que cuando el usuario se posisione sobre un > botón por ejemplo, se pudiera reproducir un sonido, esto lo hago porque > el requisito del programa es que pueda ser inclusivo para todos, esto > significa que yo lo pueda usar sin mi lector de pantalla, para esto > quisiera hacer una grabación de voz para cada botón, pero no sé como > hacer que pygtk me diga en que botón está el usuario para decirle luego > que reprodusca el sonido que quiera. > > Y la otra consulta es: estuve leyendo el manual de PYGTK en español y > hay algo que nunca me quedó claro, cuando se crea una ventana no hay > modo de cerrarla pero sin llamar a gtk.main_quit(), ya que esto la > destruye, pero no me deja abrir otra, aún no sé como hacer para que se > cierre la ventana principal y solo quede la ventana nueva, o como hacer > para lograr eso, como en todos los programas, uno selecciona una opción > y se cambia la ventana, pero como se hace eso en pygtk? > > Gracias de antemano y perdón por las molestias. > > saludos > > _______________________________________________ > Python-es mailing > listPython-es@python.orghttp://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > Hola Manuel > > Para saber sobre que botón esta el cursor del usuario, puedes usar el > evento 'enter' y el evento 'leave'. > > Te adjunto el código: > > ------------------------------------------------------------------ > import gtk > > class Button: > def __init__(self): > window = gtk.Window() > button = gtk.Button("Button") > > window.connect("destroy", lambda w: gtk.main_quit()) > button.connect("enter", self.button_enter) > button.connect("leave", self.button_leave) > > window.add(button) > window.show_all() > > def button_enter(self, widget): > print "El usuario esta sobre el boton" > > def button_leave(self, widget): > print " El usuario salio del boton" > > Button() > gtk.main() > ------------------------------------------------------------ > > Con respecto a la creación de una ventana secundaria, para que la puedas > mostrar ,y ocultar la ventana principal, debes utilizar el método > 'hide'. > > Aquí un ejemplo: > ------------------------------------------------------------------ > import gtk > > class Button: > def __init__(self): > self.ventanaprincipal = gtk.Window() > self.ventanaprincipal.set_title('Ventana Principal') > self.button = gtk.Button("Mostrar ventana Secundaria") > > self.ventanaprincipal.connect("destroy", lambda w: > gtk.main_quit()) > self.button.connect("clicked", self.button_clicked) > > > self.ventanaprincipal.add(self.button) > self.ventanaprincipal.show_all() > > def button_clicked(self, widget): > self.ventanaprincipal.hide() > self.ventanasecundaria = gtk.Window() > self.ventanasecundaria.set_title('Ventana Secundaria') > self.ventanasecundaria.show() > > > > Button() > gtk.main() > > ------------------------------------------------------------------ > > Espero que te sirvan de algo los ejemplos y suerte en tu proyecto. > > Saludos. > > Cristian. > > > _______________________________________________ > Python-es mailing > listPython-es@python.orghttp://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > > > -- > Atte: Manuel Eduardo Cortéz Vallejo http://livemanuel.wordpress.com > > _______________________________________________ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > >
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/