Domanda

Ho creato un molto semplice applicazione, che presenti un entrybox easygui () e continua a ciclo questo tempo indeterminato in quanto riceve l'input dell'utente.

Posso uscire dal programma utilizzando il pulsante Annulla in quanto questo restituisce None, ma vorrei anche essere in grado di utilizzare lo standard 'chiudere' il pulsante per uscire dal programma. (Es. In alto a destra di una finestra di Windows, in alto a sinistra di una finestra di Mac) Questo pulsante attualmente non fa nulla.

Dando uno sguardo al modulo easygui ho trovato questa linea:

root.protocol('WM_DELETE_WINDOW', denyWindowManagerClose )

Questo sembrerebbe essere il colpevole. Non sono un esperto, ma probabilmente tkinter riuscivo a capire come modificare questo gestore di agire nel modo desiderato.

Tuttavia, come preferirei non pasticciare con il modulo easygui, C'è un modo per ignorare questo comportamento dal mio script principale, e hanno il pulsante di chiusura o chiudere il programma a titolo definitivo o Nessuno tornare?

È stato utile?

Soluzione

Si richiederebbe alterare il modulo easygui, sì. Io lo otterrà modificato!

** Ho inviato in una e-mail al creatore EasyGUI explaning questo [12:12, Gennaio 23/09]

** Voglio solo dire che la possibilità di questo cambiamento accade - se non del tutto, cosa di cui dubito - è molto piccola. Vedete, EasyGUI è destinato ad essere un modo semplice e discreta per creare GUI. Credo che questa aggiunta non sarebbe aiutare qualsiasi, soprattutto perché l'interfaccia è molto sequenziale, quindi sarebbe fonte di confusione per i nuovi utenti. [12:19, Gennaio 23/09]

** Il creatore EasyGUI detto in risposta alla mia e-mail:

  

Un dialogo easygui dovrebbe mai uscita   l'applicazione - si deve passare indietro   un valore al chiamante e lasciare che il   chiamante decidere cosa fare.

     

Ma questa è un'idea interessante.   Piuttosto che semplicemente ignorare un clic su   l'icona "close", scatole easygui potrebbe   restituire lo stesso valore che un clic su   il pulsante "Annulla" sarebbe tornato.   Io medito su questo.

     

- Steve Ferg

Credo che questo è un progresso, almeno. [02:40, Gennaio 23/09]

Altri suggerimenti

Non so in questo momento, ma avete provato qualcosa di simile:?

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

o

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

Non ho provato, ma Google qualcosa come "Tkinter protocol WM_DELETE_WINDOW"

Ho trovato una soluzione, la risposta è sotto la casella di scelta, quando definisce alcune funzioni (si può semplicemente digitare da trovare denyWindowManagerClose) e passare al punto in cui lo definisce. Basta cancellare e inserire questo codice al suo posto.

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

È possibile creare un file di backup, ma questo lavoro per tutte le caselle, i suggerimenti qui riportati a parte questo non funziona, ho provato la loro. Se volete vedere un video che ho su di essa (è in portoghese, ma è possibile seguirla) basta andare sul canale youtube, io caricare presto e inserisci il link qui:)

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