Python 如何以编程方式关闭wx.DirDialog?
我有一个wxpython应用程序,可以在单击按钮时打开wx.dir对话框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打开时,我想在
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(非正常对话框窗口)吗?