Question

J'ai créé un très application simple, qui présente un entrybox EasyGUI () et continue à boucle indéfiniment car il reçoit l'entrée d'utilisateur.

Je peux quitter le programme en utilisant le bouton Annuler bouton comme ce retourne None, mais je voudrais aussi être en mesure d'utiliser la norme « proche » de quitter le programme. (Ie. En haut à droite d'une fenêtre de Windows, en haut à gauche d'une fenêtre Mac) Ce bouton fait actuellement rien.

Un regard sur le module EasyGUI je trouve cette ligne:

root.protocol('WM_DELETE_WINDOW', denyWindowManagerClose )

Cela semble être le coupable. Je ne suis pas expert, mais tkinter je pourrais probablement travailler sur la façon de modifier ce gestionnaire d'agir comme je le veux.

Cependant, comme je préfère ne pas déconner avec le module EasyGUI, est-il un moyen de modifier ce comportement de mon script principal, et ont le bouton de fermeture soit fermer le programme pur et simple ou retour Aucun?

Était-ce utile?

La solution

Il faudrait modifier le module EasyGUI, oui. Je l'obtenir modifié!

** J'ai envoyé un e-mail au créateur EasyGUI explaning ce [12:12, Janvier 23/09]

** Je veux juste dire que la possibilité de ce changement se passe - le cas échéant, ce dont je doute - est très petit. Vous voyez, EasyGUI est destiné à être un moyen simple, discret pour créer des interfaces graphiques. Je pense que cet ajout ne serait pas utile tout, d'autant plus que l'interface est très séquentielle, donc il serait source de confusion pour les nouveaux utilisateurs. [24:19, Janvier 23/09]

** Le créateur EasyGUI a dit ceci en réponse à mon adresse e-mail:

  

Un dialogue EasyGUI ne devrait jamais quitter   l'application - il devrait passer en arrière   une valeur à l'appelant et de laisser la   appelant décider quoi faire.

     

Mais ceci est une idée intéressante.   Plutôt que d'ignorer simplement un clic sur   l'icône « fermer », boîtes EasyGUI pourrait   retourner la même valeur qu'un clic sur   le bouton « annuler » retournerait.   Je médite sur ce point.

     

- Steve Ferg

Je pense que ce progrès au moins. [14:40, Janvier 23/09]

Autres conseils

Je ne sais pas maintenant, mais avez-vous essayé quelque chose comme ceci:

root.protocol('WM_DELETE_WINDOW',  self.quit)

ou

root.protocol('WM_DELETE_WINDOW',  self.destroy)

Je ne l'ai pas essayé, mais quelque chose comme google "Tkinter protocol WM_DELETE_WINDOW"

J'ai trouvé une solution, la réponse est inférieure à la boîte de choix, quand il définit certaines fonctions (vous pouvez taper trouver denyWindowManagerClose) et aller là où il le définit. Il suffit de l'effacer et de mettre ce code à sa place.

    def denyWindowManagerClose():
#------------------------------------------------------------------
#  Changed by ProgrammingBR
#  Enables the user to close the window without entering a value
#  Youtube URL: https://www.youtube.com/channel/UCTZh6kWz_iYACNE6Jcy2lhw
#------------------------------------------------------------------
    global __enterboxText
    __enterboxText = None
    boxRoot.quit()

Vous pouvez créer un fichier de sauvegarde, mais cela fonctionne pour toutes les boîtes, les suggestions faites ici à part cela ne fonctionne pas, j'ai essayé le leur. si vous voulez voir, j'ai une vidéo sur elle (il est en portugais, mais vous pouvez le suivre) juste aller sur la chaîne youtube, je vais le télécharger rapidement et poster le lien ici:)

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