Python-Django 和 PyQt4 的问题

Issues with Python-Django and PyQt4

本文关键字:问题 PyQt4 Python-Django      更新时间:2023-09-26

已修复此问题已通过将 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()

你以前见过这个或尝试过做类似的事情吗?请帮助我提供任何信息谢谢

附言这是我在这里的第一篇文章,我希望一切都清楚:)

编辑 由于罗斯蒂斯拉夫,警告消失了,但我仍然有销售问题。

实际上你使用线程

Django 开发服务器默认使用线程。您可以将可选的--nothreading参数传递给runserver命令,该命令旨在禁止服务器使用线程:

python ./manage.py runserver --nothreading ...