2013-02-05 2 views
1

수동으로 변경할 수있는 wx.dirPicker 컨트롤이있는 Python 응용 프로그램이있어서 코드를 실행하기 전에 선택된 경로가 존재하는지 확인해야합니다. 이렇게하려면 다음을 사용하고 있습니다.MessageDialog가 닫히지 않습니다

def m_dirPicker1OnUpdateUI(self, event): 
     src_directory = self.m_dirPicker1.GetTextCtrlValue() 
     if os.path.exists(src_directory)==False: 
         dlg = wx.MessageDialog(self, "The specified path doesn't exist", "Warning", wx.ICON_ERROR | wx.ICON_EXCLAMATION) 
         dlg.ShowModal()  
         #print(dlg.GetReturnCode()) 
         if dlg.GetReturnCode() == 0: 
          self.Destroy() 

경로가 존재하면 올바르게 작동합니다.

그러나 경로가 없으면 메시지 대화 상자가 나타나지만 확인 버튼을 누르면 메시지 대화 상자를 닫을 수 없으며 그 이유를 알 수 없습니다.

감사합니다.

답변

0

나는 ") (self.Destroy"당신은 전에 "dlg.Destroy()"를 호출해야한다고 생각 :

result = dlg.ShowModal()  
dlg.Destroy() 
if result == 0: 
    self.Destroy() 
+0

코드를 사용했지만 작동하지 않습니다. 문제를 해결하는 방식으로 문제를 해결했습니다. – TMoover

+0

@TMoover : 문제를 해결했음을 알고 기쁩니다! :) 당신이이 문제에 어떻게 대처할 수 있었는지에 대한 몇 가지 세부 사항을 제공하는 자신의 질문에 응답/의견을 추가 할 수 있다면 미래의 독자들에게 좋을 수도 있습니다. – furins

1

내 첫 번째 방법이었다 : 때마다 사람이 수동으로 wx.dirpicker 경로를 변경, 내가 필요 내 응용 프로그램이 보고서 파일을 해당 경로로 내보내므로 경로가 존재하는지 확인하십시오.

나중에 누군가가 "보고서 작성"버튼을 누를 때만 경로를 확인하기로 결정했습니다. 이렇게하려면 다음 코드를 사용합니다.

try: 
    if src_directory = self.m_dirPicker1.GetTextCtrlValue(): 
     if os.path.exists(src_directory)==False: 
     dlg = wx.MessageDialog(self, "The specified path doesn't exist", "Warning", wx.ICON_EXCLAMATION) 
     dlg.ShowModal() 
    else: 
     #run my code to create report file in src_directory path 

except: 
    create report_error file