문제

나는있다 AboutDialog Glade로 만든 상자이지만 닫기 버튼은 작동하지 않습니다. 이 버튼을 별도의 함수에 연결하는 방법은 모르겠습니다. dialog-action_area.

또 다른 문제는 창 관리자가 만든 닫기 버튼을 사용하는 경우 파괴되었으므로 다시 열 수 없습니다.

이걸 변경하여 숨겨져있는 방법은 무엇입니까?

도움이 되었습니까?

해결책

삭제 또는 취소 신호를받을 때 위젯의 hide () 메소드를 호출해야합니다.

response = self.wTree.get_widget("aboutdialog1").run() # or however you run it
if response == gtk.RESPONSE_DELETE_EVENT or response == gtk.RESPONSE_CANCEL:
  self.wTree.get_widget("aboutdialog1").hide()

응답 유형 상수를 찾을 수 있습니다 GTK 문서에서

다른 팁

다른 대화 창으로서, 그들은 당신이

  1. 실행 방법을 사용하십시오.
  2. "Reponse"신호를 사용하십시오

첫 번째는 기본 루프를 차단하고 대화 상자가 응답을받는 즉시 반환됩니다. 이것은 액션 영역의 버튼을 클릭하거나 ESC를 누르거나 대화 상자의 응답 방법을 호출하거나 마지막으로 "파괴"됩니다. 창이 파괴된다는 것을 의미하지는 않습니다. 이것은 run () 메소드가 종료되어 응답을 반환한다는 것을 의미합니다. 이와 같이:

response = dialog.run()

디버거를 사용하는 경우 버튼을 클릭하거나 대화 상자를 닫을 때까지 기본 루프가 유지됩니다. Yout 응답을 받으면 원하는대로 사용할 수 있습니다.

response = dialog.run()
if response == gtk.RESPONSE_OK:
    #do something here if the user hit the OK button 
dialog.destroy()

두 번째는 블로킹하지 않은 물건에서 대화 상자를 사용할 수있게 한 다음 대화 상자를 "응답"신호에 연결해야합니다.

def do_response(dialog, response):
    if response == gtk.RESPONSE_OK:
        #do something here if the user hit the OK button 
    dialog.destroy()

dialog.connect('response', do_response)

이제 대화 상자를 파괴해야합니다.

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