2015-03-12 2 views
0
, специфические

Я использую PyQt, и я только что сделал QFileDialog сохранить PDF, который произвел моя программа, как это:QFileDialog GetSaveFileName фильтр только привод

QtGui.QFileDialog.getSaveFileName(self, "Save file", "", ".pdf") 

Но файл должен быть сохранен в «P: \ ", в любой папке, но должны быть" P: ". Как я могу это сделать?

+1

Почему 'P: \'? Что делать, если такого диска нет? – ForceBru

+0

Это удаленное приложение. Если отображается c:, они будут сохраняться на сервере, а P: его сопоставленная сетевая папка, к которой у всех есть доступ. И верьте мне, люди путаются о локальном ПК, сетевом и удаленном ПК. – Antonio

ответ

1

Вам нужны directoryEntered и fileSelected сигналы вместо модальных getSaveFileName. Некоторый псевдокод:

self.dialog = QtGui.QFileDialog() 
self.dialog.directoryEntered.connect(self.checkDir) 
self.dialog.fileSelected.connect(self.saveFile) 
self.dialog.setAcceptMode(QFileDialog.AcceptSave) 
self.dialog.setFileMode(QFileDialog.AnyFile) 
self.dialog.setDirectory("P:") 
self.dialog.show() 
.... 
def checkDir(self, directory): 
    if not (directory.startsWith("P:")): 
     self.dialog.setDirectory("P:") 

def saveFile(self, fileName): 
    directory = QtCore.QFileInfo(fileName).canonicalPath() 
+0

Спасибо! Но у меня есть два вопроса. Что я делаю неправильно и что мне делать в saveFile? Как получить имя файла и папку? Защиту gera_pdf (само): диам = QtGui.QFileDialog() dia.directoryEntered.connect (self.checkDir) dia.fileSelected.connect (self.saveFile) dia.setDirectory ("Р:") диам. шоу() защиту checkDir (я, каталог): если нет (directory.startsWith ("P:")): QtGui.QFileDialog.setDirectory ("P:") защиту SAVEFILE (Я): 1 = = 1 PASTED ЗДЕСЬ СЛИШКОМ: http://pastebin.com/Rg03xJB5 – Antonio

+0

обновлен ответ – svlasov

+0

Практически там! TypeError: QDir.absoluteFilePath (QString): недостаточно аргументов. Каким должен быть аргумент? – Antonio

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