<div>#! /usr/bin/env python</div><div>import gtk, os</div><div><br></div><div>class princ:</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>def __init__(self):</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>self.win1 = gtk.Window()</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>self.but1 = gtk.Button('Boton 1')</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>self.but2 = gtk.Button('Boton2')</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>self.hb = gtk.HBox()</div><div><span class="Apple-tab-span" style="white-space:pre">        </span></div><div><span class="Apple-tab-span" style="white-space:pre">                </span>self.win1.add(self.hb)</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>self.hb.pack_start(self.but1)</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>self.hb.pack_start(self.but2)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span></div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>self.but1.connect('focus-in-event', self.but1_focus)</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>self.but2.connect('focus-in-event', self.but2_focus)</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>self.win1.connect('destroy', gtk.main_quit)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span></div><div><span class="Apple-tab-span" style="white-space:pre">                </span>self.win1.show_all()</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>def but1_focus(self, widget, b):</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>print 'Boton 1 en foco'</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>def but2_focus(self, widget, b):</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>print 'Boton 2 en foco'</div>
<div>princ()</div><div>gtk.main()</div><div><br></div><div>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)</div>
<br><div class="gmail_quote">El 4 de marzo de 2011 16:12, manuel <span dir="ltr"><<a href="mailto:lalo_america11@hotmail.com">lalo_america11@hotmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div text="#000000" bgcolor="#ffffff">
Hola.<br>
<br>
Gracias por la respuesta, pero en lo que se refiere a los botones,
creo que sería algo un poco más complicado.<br>
<br>
Explico.<br>
<br>
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.<br>
<br>
Lo de las ventanas no se me había ocurido, pensaba que había otro
método o algo así, gracias.<br>
<br>
Saludos<br>
<br>
El 04/03/11 11:27, craf escribió:
<div><div></div><div class="h5"><blockquote type="cite">
<pre>--------- Mensaje reenviado --------
</pre>
<blockquote type="cite">
<pre>De: manuel <a href="mailto:lalo_america11@hotmail.com" target="_blank"><lalo_america11@hotmail.com></a>
Reply-to: La lista de python en castellano <a href="mailto:python-es@python.org" target="_blank"><python-es@python.org></a>
Para: La lista de python en castellano <a href="mailto:python-es@python.org" target="_blank"><python-es@python.org></a>
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 list
<a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a>
<a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a>
</pre>
</blockquote>
<pre>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.
</pre>
<pre><fieldset></fieldset>
_______________________________________________
Python-es mailing list
<a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a>
<a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a>
</pre>
</blockquote>
<br>
<br>
</div></div><font color="#888888"><div>-- <br>
Atte:
Manuel Eduardo Cortéz Vallejo
<a href="http://livemanuel.wordpress.com" target="_blank">http://livemanuel.wordpress.com</a></div>
</font></div>
<br>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org">Python-es@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div><br>