1

我有一个带有 wx.dirPicker 控件的 Python 应用程序,可以手动更改它,我需要确保在运行我的代码之前选择的路径存在。为此,我正在使用这个:

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

它工作正常,检测路径是否存在。

但是,当路径不存在时,会出现消息对话框,但在按下 OK 按钮后我无法关闭它,我不明白为什么。

谢谢你。

4

2 回答 2

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 
于 2013-02-07T15:58:09.333 回答
0

我认为你应该在“self.Destroy()”之前调用“dlg.Destroy()”:

result = dlg.ShowModal()    
dlg.Destroy()
if result == 0:
    self.Destroy() 
于 2013-02-05T16:00:00.920 回答