2013-03-23 4 views
0

MessageDialog를 열기 전에 중지하고 MessageDialog를 닫은 후 다시 시작하려는 wxTimer를 실행하고 있습니다.wxPython MessageDialog - 상태를 쿼리하는 방법?

어떻게하면됩니까? 대화 상자가 닫혔는지 여부를 알려주는 메서드를 찾지 못했습니다. 타이머가 기본적으로 그냥 똑딱 계속 점점 더 많은 창은 모든 틱 :(

당신이 나를 도울 수 있기를 바랍니다. 감사합니다!

+0

'ShowModal'을 사용하여 MessageDialog를 열면'ShowModal' 호출이 리턴 될 것입니다. 대화 상자가 닫힐 때 'ShowModal'과'False'를 호출하기 직전에 변수 (또는 객체 속성)를'True'로 설정하면 MessageDialog가 열려 있는지 여부를 감지 할 수 있습니다. –

+0

실제로 작동했습니다. 감사합니다! :-) – SGer

+0

도움이 되니 기쁩니다! 나는 지금 그것을 완전한 답으로 썼다. –

답변

0

wxPython에 정말 어떤 메커니즘이없는에서 열리는 순간

MessageDialog가 열려 있는지 여부를 결정. 당신이 대신 할 수있는 것은 수동 인 것은 대화 상자가 열려 있는지 여부를 추적합니다.

당신이 ShowModal를 사용하여 MessageDialog을 열 경우, ShowModal 호출 대화 상자를 닫을 때. 당신은 할 수 반환 내가 쓰는 깃발을 사용해라. 다음 대화 상자가 열려 있는지 여부를 결정하기 위해 self.is_dialog_open를 사용할 수 있습니다 wx.Timer에 의해 호출

self.is_dialog_open = True 
dialog.ShowModal() 
self.is_dialog_open = False 

에있어서, 나중에 ShowModalFalse에 호출하기 전에 True에 같은 즉, 뭔가를 설정 s의.

응용 프로그램의 구조에 따라이 플래그를 self 대신 다른 개체에 저장할 수 있습니다.

(이 코드가 경쟁 조건에 취약하지 않음을 보증하지는 않습니다. 타이머가 ShowModal()이 반환 된 직후에 열려 있지만 self.is_dialog_open이 다시 False으로 설정되기 전에 타이머가 열려 있는지 확인하는 경우 타이머 다행히도 이것은 당신에게 심각한 문제는 아니기를 바랍니다.)