Question

J'ai une boîte de AboutDialog fait à Glade, mais le bouton Fermer ne fonctionne pas. Je ne sais pas comment connecter ce bouton à une fonction séparée, car il se trouve dans un widget appelé dialog-action_area.

Un autre problème est de savoir si j'utilise le bouton de fermeture créé par le gestionnaire de fenêtres, je ne peux pas l'ouvrir à nouveau parce qu'il a été détruit.

Comment puis-je changer cela il cache juste?

Était-ce utile?

La solution

Vous devez appeler la méthode hide () du widget lorsque vous recevez supprimer ou annuler des signaux:

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

Vous pouvez trouver les constantes de type de réponse en la documentation GTK

Autres conseils

Comme toute autre fenêtre de dialogue, ils vous obligent à

  1. Assurez-utilisation de la méthode d'exécution.
  2. utilisation du signal "Reponse"

La première bloquera la boucle principale et sera de retour dès que la boîte de dialogue reçoit une réponse, cela peut être, cliquez sur un bouton dans la zone d'action ou appuyez sur Echap, ou appelez la méthode de réponse de dialogue ou « détruire » la fenêtre , le dernier ne veut pas dire que la fenêtre wil être détruit, cela signifie que la méthode run () va quitter et retourner une réponse. comme ceci:

response = dialog.run()

Si vous utilisez un débogueur, vous remarquerez que la boucle principale reste jusqu'à ce que vous cliquez sur un bouton ou d'essayer de fermer la boîte de dialogue. Une fois que vous avez reçu une réponse yout, alors vous pouvez useit que vous voulez.

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

La seconde vous permet d'utiliser la boîte de dialogue dans une substance non-bloquant, alors vous devez connecter votre dialogue au signal « réponse ».

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)

Maintenant, vous remarquez que vous devez détruire votre boîte de dialogue

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top