Pregunta

He creado un muy aplicación sencilla, que presenta una entrybox easyGUI () y continúa este bucle indefinidamente, ya que recibe la entrada del usuario.

Puedo salir del programa utilizando el botón Cancelar, ya que devuelve None, pero también me gustaría ser capaz de utilizar el estándar de 'cerca' botón para salir del programa. (Es decir. La parte superior derecha de la ventana de Windows, parte superior izquierda de una ventana de Mac) Este botón hace nada actualmente.

Echando un vistazo al módulo easyGUI me encontré con esta línea:

root.protocol('WM_DELETE_WINDOW', denyWindowManagerClose )

Esto parece ser el culpable. No soy un experto Tkinter pero probablemente podría encontrar la manera de alterar este controlador para actuar de la manera que quiero.

Sin embargo, como preferiría no enredar con el módulo easyGUI, ¿Hay una manera de anular este comportamiento de mi script principal, y tienen el botón de cierre o bien cerrar el programa de plano o Ninguno volver?

¿Fue útil?

Solución

Se requeriría alterar el módulo easyGUI, sí. Me lo obtendrá modificado!

** He enviado en un correo electrónico al creador easyGUI explaning esta [24:12, Enero 23/09]

** Sólo quiero decir que la posibilidad de que este cambio suceda - en todo caso, que lo dudo - es muy pequeña. Usted ve, easyGUI pretende ser una forma sencilla, discreta para crear interfaces gráficas de usuario. Creo que esta adición no ayudaría cualquiera, sobre todo desde la interfaz es muy secuencial, por lo que sería confuso para los nuevos usuarios. [24:19, Enero 23/09]

** El creador easyGUI dijo esto en respuesta a mi correo electrónico:

  

Una de diálogo easyGUI nunca se debe salir   la aplicación - que debe pasar de nuevo   un valor a la persona que llama y dejar que el   persona que llama decidir qué hacer.

     

Sin embargo, esta es una idea interesante.   En lugar de hacer caso omiso de un clic en   el icono de "cerrar", cajas easyGUI podía   devolver el mismo valor que un clic en   el botón "cancelar" volvería.   Voy a meditar en esto.

     

- Steve Ferg

Creo que este es el progreso por lo menos. [14:40, Enero 23/09]

Otros consejos

No sé en este momento, pero ¿ha intentado algo como esto:?

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

o

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

No he probado, pero algo así como Google "Tkinter protocol WM_DELETE_WINDOW"

he encontrado una solución, la respuesta está por debajo de la casilla de selección, cuando define algunas funciones (que puede escribir sólo para encontrar denyWindowManagerClose) e ir a donde él lo define. Simplemente borrarlo y poner este código en su lugar.

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

Se puede crear un archivo de copia de seguridad, pero esto va a funcionar para todas las cajas, las sugerencias que se dan aquí aparte de esto no va a funcionar, probé el ellos. Si desea ver un video que tengo en él (está en portugués, pero se puede seguirla) sólo tiene que ir al canal de youtube, voy a subir pronto y enviar el enlace aquí:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top