已修复此问题已通过将 QApplication 移出 main() 来解决。
您好我正在尝试实现一个执行给定 URL 的 JavaScript 代码并返回最终 HTML 的 Web 服务。我正在使用 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()
你以前见过这个或尝试做类似的事情吗?请帮我提供任何信息谢谢
PS这是我在这里的第一篇文章我希望一切都清楚:)
编辑由于 Rostyslav,警告消失了,但我仍然有销售问题。