使用带有python 3.6.5的wxPython版本4.0.1(pheonix)
我使用wxPython DirDialog来允许我的用户输入一个开始目录。它正确地选择并填充我的工作目录"变量(使用GetPath())但不会关闭目录对话框提示框。
我通读了wxPython用户的谷歌页面,我发现的唯一相关问题是将此作为"预期的行为,"暗示它会在执行后期发生(https://groups.google.com/forum/#!searchin/wxpython-users/close%7Csort:date/wxpython-users/ysEZK5PVBN4/ieLGEWc6AQAJ)。
然而,直到整个剧本完成运行(这花费了相当长的时间)之后,我并没有关闭,给了我死亡的旋转轮。我尝试了一系列调用来试图强制窗口关闭。app = wx.App()
openFileDialog = wx.DirDialog(None, "Select", curr, wx.DD_DIR_MUST_EXIST)
openFileDialog.ShowModal()
working_directory = openFileDialog.GetPath()
openFileDialog.EndModal(wx.CANCEL) #also wx.Close(True) and wx.Destroy()
openFileDialog.Destroy()
openFileDialog=None
我还尝试创建一个窗口,将其作为DirDialog的父窗口传递,然后关闭窗口,它给出了相同的行为。
答案 0 :(得分:1)
您没有提及您所使用的操作系统或wx
的版本,但在您提供的部分代码中没有MainLoop
,这是Robin Dunn在他的回答,在你的链接中。
试试这个,看看它是否按照你期望的方式工作。
import wx
from os.path import expanduser
import time
class choose(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, -1, "Dialog")
panel = wx.Panel(self,-1)
text = wx.StaticText(panel,-1, "Place holder for chosen directory")
self.Bind(wx.EVT_CLOSE, self.OnClose)
self.Show()
curr = expanduser("~")
dlg = wx.DirDialog(None, message="Choose a directory", defaultPath = curr,
style=wx.DD_DEFAULT_STYLE|wx.DD_DIR_MUST_EXIST)
if dlg.ShowModal() == wx.ID_OK:
text.SetLabel(dlg.GetPath())
dlg.Destroy()
b = wx.BusyInfo("I'm busy counting",parent=None)
wx.Yield()
for i in range(30):
time.sleep(1)
del b
def OnClose(self, event):
self.Destroy()
if __name__ == '__main__':
my_app = wx.App()
choose(None)
my_app.MainLoop()