2012-07-04 4 views
0

우분투 도구로 gtk 응용 프로그램을 만들었습니다. 그러나 창 닫기 버튼 (창 상단 왼쪽에있는 버튼)에 몇 가지 문제가 발생했습니다. 내 응용 프로그램을 시스템 트레이에서 닫으십시오. 그래서 메소드에 코드를 작성하고, 내 윈도우에 버튼을 만들고, 내 메소드에 "클릭 한"신호를 연결하십시오. 모든 것이 작동해야합니다. 이제 내 윈도우 닫기 버튼을 원합니다. 나는이 방법을 발견 내가 빨리 작성된 코드에 찾아 같은 thing.When을 수행) (그래서 그 대신 Gtk.main_quit의빨리 + GtkWindow 기본 닫기 버튼

def on_destroy(self, widget, data=None): 
    # Clean up code for saving application state should be added here. 
    Gtk.main_quit() 

을 나는 내 window.The 일에 배포 버튼 내 핸들러를 호출 지금은 내 응용 프로그램이 시스템 트레이에 숨어 있지만 내가 그것을 숨기고 싶다 ther 비록 내 애플 리케이션의 프로세스가 살아 있다는 것을 알 수는 있지만, e는 윈도우가 아니다. 내가 만든 버튼을 사용할 때 만든 앱을 다시 볼 때 내 앱을 볼 수 있으므로 시스템 닫기 버튼을 누르면 신호가 두 개 이상 있다는 것을 분명히 알 수 있습니다.

그럼 내 질문은 시스템 버튼에서 창을 닫을 때 다른 신호가 호출된다는 것입니다. 그리고 다른 곳의 신호를 처리하는 곳은 어디에서 신속하게 구현됩니까?

감사합니다.

답변

1

귀하의 창은 "destroy"입니다. 이 신호에 연결하면 코드를 실행할 수 있지만 창은 여전히 ​​파괴됩니다. Gtk.main_quit()으로 메인 루프를 벗어나지 않으면 앱이 계속 실행 중입니다. 창을 다시 표시하려면 창을 다시 만들어야합니다.

또 다른 옵션은 윈도우의 "delete-event"에 콜백 함수를 연결하는 것입니다. 이 신호 처리기에서 True을 반환하면 이 아니며이 파손됩니다. 즉, 창을 숨기고 True을 반환 한 다음 나중에 창을 다시 표시 할 수 있습니다. 이 신호 처리기에서 False을 반환하면 창은 계속 파괴됩니다.

+0

당신은 남자입니다! 도움을 주셔서 감사합니다! 나는 gtk api를 좀 더 자세히 읽어야합니다. 다시 감사합니다! –