2015-07-21 86 views
0

我想打开一个文件对话框,而不是我正在工作的目录。我尝试这样做:wx.FileDialog没有设置目录

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

这与wxPython无关:

尝试使用此路径与e。 G。 open(...)它也将无法正常工作。

原因:Som反斜杠/字节组合将导致解释为string literals,例如, G。 "\t"作为制表符。为了避免这种情况,你可以用r声明前缀字符串作为“原料”,这样的:

"\t" == r"\t" 

当然,如果你是在Windows和路径包含Unicode字符,它会再次变得有趣:)

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

0

迟到了,但因为它可能帮助其他有同样的问题:

由于nepix32正确解释,反斜杠需要转义。我发现,这仍然是insufficent得到它的工作,但它开始工作,一旦我包括一个额外的斜杠,所以无论这个:

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) 

工作(注意路径末尾的尾部\\)。

如果使用这种方法,原始字符串不足以消除来自文字引号的最后一个反斜杠,所以您必须改为反斜杠。或者使用正斜杠。