2015-07-21 5 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:

Попробуйте использовать этот путь с е. г. open(...), и он также не будет работать.

Причина: Сочетание комбинаций косой черты/байт приведет к интерпретации как string literals, e. г. "\t" как знак табуляции. Чтобы избежать этого, вы можете объявить строку как «сырой» с приставкой r, как это:

"\t" == r"\t" 

Конечно, если вы на окнах и путь содержит символы Юникода, то получите интересно снова :)

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, обратные косые черты должны быть экранированы. Я обнаружил, что это все еще Недостаточно высокий, чтобы заставить его работать, но он начал работать, как только я включил дополнительный обратную косую черту, так как это:

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) 

работа для меня (обратите внимание на конечный \\ в конце пути).

Если вы используете это, необработанной строки недостаточно, чтобы устранить последнюю обратную косую черту из символа буквенного кавычки, поэтому вам нужно избежать обратных косых черт. Или используйте косые черты.

Смежные вопросы