Domanda

Ho una scatola AboutDialog fatto in radura, ma il pulsante Chiudi non funziona. Non so come collegare questo tasto per una funzione separata, dal momento che si trova in un widget chiamato dialog-action_area.

Un altro problema è se uso il pulsante di chiusura creato dal gestore di finestre, non posso aprirlo di nuovo perché è stato distrutto.

Come posso cambiare questo in modo che solo nasconde?

È stato utile?

Soluzione

È necessario chiamare il metodo hide () del widget quando si riceve cancellare o annullare i segnali:

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()

Si possono trovare le costanti tipo di risposta in la documentazione GTK

Altri suggerimenti

Come qualsiasi altra finestra di dialogo, che richiedono di

  1. Fare uso del metodo di esecuzione.
  2. Fare uso del segnale di "reponse"

Il primo possa bloccare il ciclo principale e tornerà non appena la finestra riceve una risposta, questo può essere, fare clic su qualsiasi pulsante nell'area azione o premere Esc, o chiamare il metodo risposta del dialogo o "distruggere" la finestra , l'ultimo non significa che la finestra wil essere distrutto, ciò significa che il metodo run () terminerà e restituire una risposta. in questo modo:

response = dialog.run()

Se si utilizza un debugger, si noterà che il ciclo principale rimane lì fino a quando si fa clic su un pulsante o tenta di chiudere la finestra di dialogo. Dopo aver ricevuto la risposta yout, allora si può UseIt come si desidera.

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

La seconda consente di utilizzare la finestra di dialogo in una roba non bloccante, poi si deve collegare la finestra di dialogo per il segnale di "risposta".

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)

Ora, si nota che è necessario distruggere la vostra finestra di dialogo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top