Frage

Ich habe eine erstellt sehr einfache Anwendung, die eine EasyGUI entrybox präsentiert () und weiterhin Schleife dieses auf unbestimmte Zeit, da es eine Benutzereingabe empfängt.

kann ich das Programm beendet die Schaltfläche Abbrechen verwenden, da dies keine gibt, aber ich würde auch ‚schließen‘ den Standard in der Lage sein möge zu verwenden, um das Programm zu beenden. (Dh. Oben rechts auf einem Windows-Fenster oben links auf ein Mac-Fenster) Mit dieser Taste zur Zeit nichts tut.

einen Blick auf die EasyGUI Modul Unter fand ich diese Zeile:

root.protocol('WM_DELETE_WINDOW', denyWindowManagerClose )

Dies scheint der Täter zu sein. Ich bin kein Experte, aber tkinter Ich könnte wahrscheinlich herausfinden, wie diese Prozedur zu ändern, um die Art und Weise zu handeln, die ich will.

Aber, wie ich mag lieber nicht herumschlagen mit dem EasyGUI Modul, Gibt es eine Möglichkeit, dieses Verhalten von meinem Haupt-Skript außer Kraft zu setzen, und die Schließen-Schaltfläche entweder das Programm völlig oder return None schließen?

War es hilfreich?

Lösung

Es würde erfordern die EasyGUI Modul zu verändern, ja. Ich werde es geändert!

** Ich habe in einer E-Mail an den EasyGUI Schöpfer explaning dieses [12.12 Januar 23.09]

gesendet

** Ich möchte nur sagen, dass die Möglichkeit, diese Änderung geschieht - wenn überhaupt, was ich bezweifle - sehr klein ist. Sie sehen, EasyGUI soll eine einfache, diskrete Art und Weise sein GUIs zu erstellen. Ich denke, dass dieser Zusatz nicht helfen würde, zumal die Schnittstelle sehr sequentiell ist, so wäre es für neue Benutzer verwirrend sein. [12.19 Januar 23.09]

** Der EasyGUI Schöpfer sagte dies in ihrer Antwort auf meine E-Mail:

  

Ein EasyGUI Dialog sollte nie Ausgang   die Anwendung - es sollte wieder passieren   ein Wert für den Anrufer und lassen Sie die   Anrufer entscheiden, was zu tun ist.

     

Aber das ist eine interessante Idee.   Anstatt einfach nur einen Klick zu ignorieren auf   das Symbol „Schließen“, EasyGUI Boxen konnte   gibt den gleichen Wert, der einen Klick auf   die Schaltfläche „Abbrechen“ zurückkehren würde.   Ich werde auf diesem meditieren.

     

- Steve Ferg

Ich denke, dass dieser Fortschritt zumindest. [02.40 Januar 23.09]

Andere Tipps

Ich weiß nicht, gerade jetzt, aber haben Sie versucht, so etwas wie dies:

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

oder

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

Ich habe nicht versucht, aber Google so etwas wie "Tkinter protocol WM_DELETE_WINDOW"

ich eine Lösung gefunden, die Antwort unter dem Auswahlfeld, wenn er einige Funktionen definiert (Sie können einfach finden denyWindowManagerClose Typen) und dorthin gehen, wo er definiert sie. löschen Sie es einfach und setzen diesen Code an seinem Platz.

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

Sie können eine Sicherungsdatei erstellen, aber dies für alle Boxen funktionieren wird, angesichts der Vorschläge hier neben das wird nicht funktionieren, habe ich versucht, die ihnen. Wenn Sie sehen möchten, habe ich ein Video auf sie (es in Portugiesisch ist, aber man kann es folgen) gehen Sie einfach auf den Youtube-Kanal, werde ich es bald hochladen und den Link hier posten:)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top