Python 如何以编程方式关闭wx.DirDialog?

Python 如何以编程方式关闭wx.DirDialog?,python,wxpython,Python,Wxpython,我有一个wxpython应用程序,可以在单击按钮时打开wx.dir对话框 dlg = wx.DirDialog(self, "Choose a directory:", style=wx.DD_DEFAULT_STYLE) if dlg.ShowModal() == wx.ID_OK: # Do some stuff 由于我的应用程序是多线程的,并且使用wxTaskbaricon,允许用户(在Win 7上)关闭应用程序,即使在modal DirDialog打开时,我想在

我有一个wxpython应用程序,可以在单击按钮时打开wx.dir对话框

dlg = wx.DirDialog(self, "Choose a directory:", style=wx.DD_DEFAULT_STYLE)
    if dlg.ShowModal() == wx.ID_OK:
        # Do some stuff
由于我的应用程序是多线程的,并且使用wxTaskbaricon,允许用户(在Win 7上)关闭应用程序,即使在modal DirDialog打开时,我想在关闭主应用程序之前关闭DirDialog。不知何故,以下方法的工作:

dlg.Destroy()
dlg.Close(True)

这是我的测试代码

我可以测试模态和非模态
wx.DirDialog()

要关闭模态对话框,我必须使用定时器,因为模态对话框阻止了对主窗口的访问

只有当我关闭对话框时,它才能关闭对话框

self.dlg = None
self.dlg.EndModal(wx.CANCEL) # or Destroy() or Close(True)
还有一件事——我使用LinuxMint15、Python2.7.4、Wxpython2.8.12.1:)



这是我的测试代码

我可以测试模态和非模态
wx.DirDialog()

要关闭模态对话框,我必须使用定时器,因为模态对话框阻止了对主窗口的访问

只有当我关闭对话框时,它才能关闭对话框

self.dlg = None
self.dlg.EndModal(wx.CANCEL) # or Destroy() or Close(True)
还有一件事——我使用LinuxMint15、Python2.7.4、Wxpython2.8.12.1:)



显示更多代码。您是否使用
self.dlg
访问类中所有函数中的
dlg
?是的,我使用self.dlg。它的任何方法都无法通过编程关闭/销毁DirDialog。可能您必须在适当的线程中执行此操作-可能在主线程或创建dialog的线程中。我在非线程程序上测试了
Destroy()
Close()
EndModal()
,它们都能正常工作。可能还有另一种可能性-意外地
dlg
None
您确定创建了wx.DirDialog(非正常对话框窗口)?显示更多代码。您是否使用
self.dlg
访问类中所有函数中的
dlg
?是的,我使用self.dlg。它的任何方法都无法通过编程关闭/销毁DirDialog。可能您必须在适当的线程中执行此操作-可能在主线程或创建dialog的线程中。我在非线程程序上测试了
Destroy()
Close()
EndModal()
,它们正常工作。可能还有另一种可能性-意外地
dlg
None
您确定创建了wx.DirDialog(非正常对话框窗口)吗?