我使用django创建了一个Web应用程序。但是,我需要一个相同的桌面应用程序,所以我使用了PyQt的webkit。除文件下载外,整个工作正常。在我的Web应用程序中,服务器在多个位置提供可下载文件。但是,当单击应该在桌面版应用程序中触发下载的按钮时,没有任何反应。
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
app = QApplication(sys.argv)
web = QWebView()
web.load(QUrl("http://localhost:8000/home"))
#web.page().setForwardUnsupportedContent(True)
#web.page().unsupportedContent.connect(save_file_callback)
web.show()
sys.exit(app.exec_())
答案 0 :(得分:1)
app = QApplication(sys.argv)
web = QWebView(loadFinished=load_finished)
web.load(QUrl("http://localhost:8000/home"))
web.page().setForwardUnsupportedContent(True)
web.page().unsupportedContent.connect(save_file_callback)
web.show()
sys.exit(app.exec_())
def save_file_callback(reply):
try:
with urllib.request.urlopen(reply.url().toString()) as response:
with open('downloaded_file.ext', 'wb') as f:
f.write(response.read())
except Exception as e:
QMessageBox.critical(None, 'Saving Failed!', str(e), QMessageBox.Ok)
def load_finished(reply):
if not reply:
QMessageBox.critical(None, 'Error!', 'An error occurred trying to load the page.', QMessageBox.Ok)
我还没有对代码进行测试,但这应该会让你走上正确的道路。代码来自我最近的项目,该项目在webview中运行Django项目作为桌面应用程序 - https://github.com/awecode/django-runner