首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MessageDialog未关闭

MessageDialog未关闭
EN

Stack Overflow用户
提问于 2013-02-05 23:24:03
回答 2查看 158关注 0票数 1

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

代码语言:javascript
复制
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按钮后将其关闭,并且我不明白为什么。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-02-07 23:58:09

我的第一种方法是:每次有人手动更改wx.dirpicker路径时,我都需要确保该路径存在,因为我的应用程序会将一个报告文件导出到该路径。

后来,我决定只在有人按下“创建报告”按钮时才检查路径。为此,我使用以下代码:

代码语言:javascript
复制
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 
票数 1
EN

Stack Overflow用户

发布于 2013-02-06 00:00:01

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

代码语言:javascript
复制
result = dlg.ShowModal()    
dlg.Destroy()
if result == 0:
    self.Destroy() 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14710919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档