1

已修复此问题已通过将 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,警告消失了,但我仍然有销售问题。

4

1 回答 1

1

Actually you use threads.

Django developments server uses threading by default. You can pass optional --nothreading parameter to runserver command which is intended to disable using threads by server:

python ./manage.py runserver --nothreading ...
于 2012-08-16T13:56:52.290 回答