【发布时间】:2012-08-16 13:30:58
【问题描述】:
已修复此问题已通过将 QApplication 移出 main() 得到修复。
您好,我正在尝试实现一个 Web 服务,它执行给定 URL 的 JavaScript 代码并返回最终的 HTML。我正在使用 PyQt4 进行 JS 处理和 Django 1.4 Web 框架。 问题是:脚本总是在命令邀请中工作,但是当我将它集成到 Django 时,它只在第一次工作,在运行 Django 本地服务器之后,然后在以下执行期间它会发出警告:
WARNING: QApplication was not created in the main() thread
QObject::startTimer: QTimer can only be used with threads started with QThread
我得到了错误的结果。 问题是我没有使用任何线程...... 这是我在 Django 上使用的脚本(urlconf 使用给定的 url 导致这个主要功能):
#!/usr/bin/env python
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
from time import time, sleep
app = QApplication(sys.argv)
def wait(app, secs=1):
deadline = time() + secs
while time() < deadline:
sleep(0)
app.processEvents()
def main(url):
# app = QApplication(sys.argv)
web = QWebView()
web.load(QUrl(url))
wait(app, 15)
return web.page().mainFrame().toHtml().toUtf8()
您以前见过这种情况或尝试过类似的事情吗?请帮我提供任何信息谢谢
附:这是我在这里的第一篇文章,希望一切都清楚:)
编辑感谢 Rostyslav,警告消失了,但我仍然遇到销售问题。
【问题讨论】:
-
我在尝试使用 django 上的 QGIS 服务器生成地图时遇到了同样烦人的问题。在我的 django 项目的 views.py 中创建 QApplication 超越了 main() 而不是在使用 QGIS 生成地图的外部 python 包中创建它使其工作。感谢您的提示!
-
干杯!我希望一切都适合你。
标签: javascript python django web-scraping pyqt4