2015-07-21 85 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) 

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

如果使用這種方法,原始字符串不足以消除來自文字引號的最後一個反斜槓,所以您必須改爲反斜槓。或者使用正斜槓。