wx.FileDialog没有设置目录

时间:2015-07-21 18:02:41

标签: wxpython openfiledialog

我正在尝试打开一个文件对话框,而不是我正在工作的目录。我试过这个:

dlg = wx.FileDialog(self, "Open", style=wx.FD_OPEN)
dlg.SetDirectory("C:\Users\tech\Desktop\Circuit Design Tool\Program Files")
dlg.ShowModal()
file_name = dlg.GetPath()
dlg.Destroy()

和此:

directory = "C:\Users\tech\Desktop\Circuit Design Tool\Program Files"
dlg = wx.FileDialog(self, "Open", directory, style=wx.FD_OPEN)
dlg.ShowModal()
file_name = dlg.GetPath()
dlg.Destroy()

但他们都打开了我正在工作的目录。有谁知道我做错了什么?

3 个答案:

答案 0 :(得分:1)

以下适用于我:

dataDir = r"C:\Users\tech\Desktop\Circuit Design Tool\Program Files"

with wx.FileDialog(None, 'Open', dataDir,
                  style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as dlg:
            if dlg.ShowModal() == wx.ID_OK:
                dbfilename = dlg.GetPath()
                dataDir, dbFile = os.path.split(dbfilename)

不知道为什么SetDirectory不起作用,但在另一个中你没有给出默认目录,请参阅: http://wxpython.org/Phoenix/docs/html/FileDialog.html?highlight=filedialog#api-class-api

答案 1 :(得分:0)

这与wxPython无关:

尝试使用此路径与e。 G。 open(...)它也无效。

原因:Som反斜杠/字节组合将导致解释为string literals,e。 G。 "\t"作为标签字符。为避免这种情况,您可以使用r前缀将字符串声明为“raw”,如下所示:

"\t" == r"\t"

当然,如果你在Windows上并且路径包含unicode字符,它将再次变得有趣:)

答案 2 :(得分:0)

晚会,但因为它可能会帮助其他人解决同样的问题:

正如nepix32正确解释的那样,需要转义反斜杠。我发现这仍然不足以让它工作,但是一旦我包含一个额外的尾随反斜杠就开始工作了,所以这两个:

dlg = wx.FileDialog(self, "Open", style=wx.FD_OPEN)
dlg.SetDirectory("C:\\Users\\long\\path\\to\\Program Files\\")

和此:

directory = "C:\\Users\\long\\path\\to\\Program Files\\"
dlg = wx.FileDialog(self, "Open", directory, style=wx.FD_OPEN)

为我工作(请注意路径末尾的尾随\\。)

如果使用此方法,原始字符串不足以消除文字引号中的最后一个反斜杠的歧义,因此您必须转义反斜杠。或者使用正斜杠。