我设法创建并线程化了一个 PyQt 应用程序,以对 url 列表进行一些截图。它工作得非常好,但它总是在某些网站上崩溃(或者至少肯定会崩溃)。
Softpedia.com就是其中之一。它只是在loadFinished事件之前因分段错误而使 Python 崩溃。即使我不使用我的线程应用程序,而是使用“原始”PyQt。
我用我在网上找到的基于 PyQt 的基本浏览器进行了测试,我遇到了同样的问题。
有人有想法吗?我开始认为这可能是一个死胡同,这并不是一个好消息。
谢谢你们!
我设法创建并线程化了一个 PyQt 应用程序,以对 url 列表进行一些截图。它工作得非常好,但它总是在某些网站上崩溃(或者至少肯定会崩溃)。
Softpedia.com就是其中之一。它只是在loadFinished事件之前因分段错误而使 Python 崩溃。即使我不使用我的线程应用程序,而是使用“原始”PyQt。
我用我在网上找到的基于 PyQt 的基本浏览器进行了测试,我遇到了同样的问题。
有人有想法吗?我开始认为这可能是一个死胡同,这并不是一个好消息。
谢谢你们!
您使用的代码可能存在某种问题,此代码不应引发错误:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from PyQt4 import QtCore, QtGui, QtWebKit
class MyWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)
self.barProgress = QtGui.QProgressBar(self)
self.barProgress.setFixedSize(80, 15)
self.barProgress.setVisible(False)
self.barStatus = QtGui.QStatusBar(self)
self.barStatus.addPermanentWidget(self.barProgress)
self.webView = QtWebKit.QWebView(self)
settingsWeb = [
QtWebKit.QWebSettings.PluginsEnabled
]
for setting in settingsWeb:
self.webView.settings().setAttribute(setting, True)
self.setStatusBar(self.barStatus)
self.setCentralWidget(self.webView)
self.webView.loadFinished.connect(self.on_webView_loadFinished)
self.webView.loadFinished.connect(self.barProgress.hide)
self.webView.loadStarted.connect(self.barProgress.show)
self.webView.loadProgress.connect(self.barProgress.setValue)
@QtCore.pyqtSlot()
def on_webView_loadFinished(self):
QtGui.QMessageBox.information(None, "Info", "Load finished!")
def loadUrl(self, url):
self.webView.load(QtCore.QUrl(url))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
app.setApplicationName('MyWindow')
main = MyWindow()
main.show()
main.loadUrl("http://www.example.com/")
sys.exit(app.exec_())