FIXED通過將QApplication移出main(),可以解決此問題。Python-Django和PyQt4的問題
嗨我想實現一個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(URL配置導致與URL這主要fonction給出)的腳本:
#!/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()
你見過這個之前還是試圖做類似的事情?請幫助我的任何信息謝謝
P.S.這是我在這裏的第一篇文章,我希望一切都清楚:)
編輯警告已經沒有了,謝謝羅斯托斯拉夫,但我仍然有銷售問題。
我不得不試圖生成蒙山上的Django QGIS服務器映射同樣惱人的問題。在我的django項目的views.py中創建QApplication與使用QGIS生成地圖的外部python包創建main()而不是創建它。謝謝你的提示 ! – Istopopoki 2015-07-19 18:27:31
乾杯!我希望一切都適合你。 – Saksow 2015-07-20 21:38:18