Pregunta

Tengo una caja de AboutDialog hecho en el claro, pero el botón Cerrar no funciona. No sé cómo conectar este botón para una función separada, ya que se encuentra en un widget llamado dialog-action_area.

Otro problema es si utilizo el botón de cierre creado por el gestor de ventanas, no puedo abrirlo de nuevo, ya que ha sido destruida.

¿Cómo puedo cambiar esto por lo que sólo se esconde?

¿Fue útil?

Solución

Es necesario llamar al método de ocultar el widget () cuando reciba borrar o cancelar señales:

response = self.wTree.get_widget("aboutdialog1").run() # or however you run it
if response == gtk.RESPONSE_DELETE_EVENT or response == gtk.RESPONSE_CANCEL:
  self.wTree.get_widget("aboutdialog1").hide()

Puede encontrar las constantes de tipo de respuesta en la documentación de GTK

Otros consejos

Como cualquier otra ventana de diálogo, que requieren que usted

  1. Hacer uso del método de ejecución.
  2. Hacer uso de la señal "Reponse"

El primer bloqueará el bucle principal y volverá tan pronto como el diálogo recibe una respuesta, esto puede ser, haga clic en cualquier botón en el área de acción o pulse Esc, o llame al método de la respuesta del diálogo o "destruir" a la ventana , el último no queremos decir que la ventana wil ser destruido, esto significa que el método run () se cerrará y devolver una respuesta. de esta manera:

response = dialog.run()

Si se utiliza un depurador, se dará cuenta de que el bucle principal permanece allí hasta que haga clic en un botón o intenta cerrar el diálogo. Una vez que haya recibido una respuesta yout, a continuación, puede Useit como desee.

response = dialog.run()
if response == gtk.RESPONSE_OK:
    #do something here if the user hit the OK button 
dialog.destroy()

El segundo le permite utilizar el diálogo en un material no-bloqueo, entonces usted tiene que conectar su diálogo con la señal de "respuesta".

def do_response(dialog, response):
    if response == gtk.RESPONSE_OK:
        #do something here if the user hit the OK button 
    dialog.destroy()

dialog.connect('response', do_response)

Ahora, usted notará que usted tiene que destruir su cuadro de diálogo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top