<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(&#39;Boton 1&#39;)</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>self.but2 = gtk.Button(&#39;Boton2&#39;)</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(&#39;focus-in-event&#39;, self.but1_focus)</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>self.but2.connect(&#39;focus-in-event&#39;, self.but2_focus)</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>self.win1.connect(&#39;destroy&#39;, 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 &#39;Boton 1 en foco&#39;</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 &#39;Boton 2 en foco&#39;</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">&lt;<a href="mailto:lalo_america11@hotmail.com">lalo_america11@hotmail.com</a>&gt;</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">&lt;lalo_america11@hotmail.com&gt;</a>
Reply-to: La lista de python en castellano <a href="mailto:python-es@python.org" target="_blank">&lt;python-es@python.org&gt;</a>
Para: La lista de python en castellano <a href="mailto:python-es@python.org" target="_blank">&lt;python-es@python.org&gt;</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 &#39;enter&#39; y el evento &#39;leave&#39;.

Te adjunto el código:

------------------------------------------------------------------
import gtk

class Button:
    def __init__(self):
        window = gtk.Window()
        button = gtk.Button(&quot;Button&quot;)
 
        window.connect(&quot;destroy&quot;, lambda w: gtk.main_quit())
        button.connect(&quot;enter&quot;, self.button_enter)
        button.connect(&quot;leave&quot;, self.button_leave)
        
        window.add(button)
        window.show_all()
    
    def button_enter(self, widget):
        print &quot;El usuario esta sobre el boton&quot;
        
    def button_leave(self, widget):
        print &quot; El usuario salio del boton&quot;

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
&#39;hide&#39;.

Aquí un ejemplo:
------------------------------------------------------------------
import gtk

class Button:
    def __init__(self):
        self.ventanaprincipal = gtk.Window()
        self.ventanaprincipal.set_title(&#39;Ventana Principal&#39;)
        self.button = gtk.Button(&quot;Mostrar ventana Secundaria&quot;)
 
        self.ventanaprincipal.connect(&quot;destroy&quot;, lambda w:
gtk.main_quit())
        self.button.connect(&quot;clicked&quot;, 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(&#39;Ventana Secundaria&#39;)
        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>