我正在使用PyQt5创建一个应用程序。它打开一个Web浏览器,它应该允许用户下载文件。
看起来像这样:
import sys
from PyQt5 import QtWidgets,QtGui,QtCore
from PyQt5.QtWebEngineWidgets import *
from PyQt5 import QtWebChannel
from PyQt5.QtWidgets import *
def _downloadRequested(item): # QWebEngineDownloadItem
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
#
global pathsave_custom
pathsave_custom = QFileDialog.getSaveFileName(None, "Select destination folder and file name", "", "Zip files (*.zip)",
options=options)[0]
print('downloading to', item.path())
item.setPath(pathsave_custom)
print('downloading to', item.path())
print(item)
print(type(item))
item.accept()
app=QtWidgets.QApplication(sys.argv)
w=QWebEngineView()
w.page().fullScreenRequested.connect(QWebEngineFullScreenRequest.accept)
w.load(QtCore.QUrl('https://google.com'))
w.page().profile().downloadRequested.connect(_downloadRequested)
w.showMaximized()
app.exec_()
我想强制下载文件的格式。无论用户写什么,我都应该在下载文件的末尾选择一个扩展名。 我怎样才能做到这一点?
答案 0 :(得分:0)
我明白了,我改变了这句话:
item.setPath(pathsave_custom)
使用:
item.setPath(pathsave_custom + '.zip')
无论用户写什么,下载的文件都是ZIP。
答案 1 :(得分:0)
在您的情况下,您似乎总是添加 .zip
扩展名,即使用户已经放置了 `.zip。
如果没有扩展名或扩展名不是.zip
,您可以执行以下操作并添加zip
:
from pathlib import Path
import sys
from PyQt5 import QtWidgets,QtGui,QtCore
from PyQt5.QtWebEngineWidgets import *
from PyQt5 import QtWebChannel
from PyQt5.QtWidgets import *
def _downloadRequested(item): # QWebEngineDownloadItem
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
#
global pathsave_custom
pathsave_custom = QFileDialog.getSaveFileName(None, "Select destination folder and file name", "", "Zip files (*.zip)",
options=options)[0]
if not file_extension or file_extension != '.zip':
pathsave_custom = pathsave_custom + '.zip'
print('downloading to', item.path())
item.setPath(pathsave_custom)
print('downloading to', item.path())
print(item)
print(type(item))
item.accept()