我正在尝试打开一个文件对话框,而不是我正在工作的目录。我试过这个:
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()
但他们都打开了我正在工作的目录。有谁知道我做错了什么?
答案 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)
为我工作(请注意路径末尾的尾随\\
。)
如果使用此方法,原始字符串不足以消除文字引号中的最后一个反斜杠的歧义,因此您必须转义反斜杠。或者使用正斜杠。