문제

나는 a 매우 EasyGui Entrybox ()를 제시하고 사용자 입력을 수신 할 때이를 무기한으로 계속 반복하는 Simple App.

이로 인해 취소 버튼을 사용하여 프로그램을 종료 할 수 있지만 표준 'Close'버튼을 사용하여 프로그램을 종료 할 수도 있습니다. (예 : Mac 창의 왼쪽 상단에있는 Windows 창의 오른쪽 상단)이 버튼은 현재 아무것도하지 않습니다.

EasyGui 모듈을 살펴보면이 줄을 찾았습니다.

root.protocol('WM_DELETE_WINDOW', denyWindowManagerClose )

이것은 범인 인 것 같습니다. 나는 Tkinter 전문가는 아니지만 아마도이 핸들러를 바꾸어 원하는 방식으로 행동하는 방법을 알아낼 수있을 것입니다.

그러나 EasyGui 모듈을 엉망으로 만들지 않기 때문에 기본 스크립트 에서이 동작을 무시하고 닫기 버튼을 프로그램을 닫거나 아무것도 반환하지 않습니까?

도움이 되었습니까?

해결책

EasyGui 모듈을 변경해야합니다. 나는 그것을 수정할 것이다!

** 나는이 Easygui Creator에게 이메일을 보냈다.

** 나는 단지이 변화의 가능성이 일어날 가능성이 매우 작다 고 말하고 싶습니다. EasyGui는 GUI를 만드는 간단하고 개별적인 방법입니다. 나는이 추가가 특히 인터페이스가 매우 순차적이기 때문에 도움이되지 않을 것이라고 생각합니다. 따라서 새로운 사용자에게 혼란 스러울 것입니다. [12:19 PM, 1 월 23/09

** EasyGui 제작자는 내 이메일에 대한 답변으로 이것을 말했습니다.

EasyGui 대화 상자는 응용 프로그램을 종료해서는 안됩니다. 발신자에게 값을 전달하고 발신자가해야 할 일을 결정하게해야합니다.

그러나 이것은 흥미로운 아이디어입니다. EasyGui Box는 "Close"아이콘을 클릭하는 것을 무시하지 않고 "취소"버튼을 클릭하는 것과 동일한 값을 반환 할 수 있습니다. 나는 이것에 대해 묵상 할 것이다.

- 스티브 퍼그

나는 이것이 최소한 진보라고 생각합니다. [오후 2시 40 분, 1 월 23/09

다른 팁

지금은 모르겠지만 이런 식으로 시도해 보셨습니까? :

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

또는

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

나는 시도하지 않았지만 Google과 같은 것입니다 "Tkinter protocol WM_DELETE_WINDOW"

솔루션을 찾았습니다. 답은 선택 상자 아래에 있습니다. 일부 기능을 정의 할 때 (DenyWindowManagerClose를 찾기 위해 입력 할 수 있음) 정의하는 곳으로 이동합니다. 그냥 지우고이 코드를 대신에 넣으십시오.

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

백업 파일을 만들 수 있지만 모든 상자에 대해 작동합니다. 여기서 제외한 제안은 작동하지 않을 것입니다. 보고 싶다면 비디오가 있습니다 (포르투갈어에 있지만 따라갈 수 있습니다) YouTube 채널로 이동하면 곧 업로드하고 여기에 링크를 게시하겠습니다 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top