Fermer par programme gtk fenêtre
Si vous avez un sous-fenêtre GTK et vous voulez le fermer par programme (par exemple, en appuyant sur un bouton "enregistrer" ou sur la touche echap), est-il un moyen privilégié pour fermer la fenêtre?
E. g.,
window.destroy()
# versus
window.emit('delete-event')
OriginalL'auteur cpburnz | 2011-05-15
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
window.destroy()
lors de la suppression d'une fenêtre en PyGTK (ou d'ailleurs n'importe quel type de widget). Lorsque vous appelezwindow.destroy()
la fenêtre émet undelete-event
événement automatiquement.En outre, en émettant un signal pour un événement à l'aide de PyGTK, il est presque toujours nécessaire de transmettre aussi un objet d'événement pour le émettent de la méthode (voir la pyGObject de la documentation pour le émettent de la méthode). Lorsqu'une tentative est faite pour passer un
gtk.gdk.Event(gtk.EVENT_DELETE)
d'un objet émettent de la méthode pour undelete-event
il ne fonctionnera pas. E. g:Peut-être la meilleure façon, cependant, est de simplement utiliser le
del
déclaration qui va automatiquement supprimer la fenêtre/widget et faire du nettoyage nécessaire pour vous. Cela est plus "pythonic" que l'appel de la fenêtre.destroy() qui va laisser autour d'une référence à un détruits fenêtre.OriginalL'auteur WirthLuce
Détruire à l'aide de la méthode ne fonctionne pas comme prévu, comme le "delete-event" rappels ne sont pas appelées à la destruction de la fenêtre, ainsi qu'un éditeur, par exemple, n'aura pas la possibilité de demander à l'utilisateur si le fichier doit être enregistré.
Dans l'exemple ci-dessus invoquant w.détruire() ne sont pas invoquer le rappel, en cliquant sur le bouton "fermer" va l'invoquer (et la fenêtre ne sera pas fermer à cause de rappel a renvoyé True).
Donc, vous avez à la fois émettre le signal, puis détruire le widget, si les gestionnaires de signaux retourné False, e.g:
OriginalL'auteur zap