PyQT严重崩溃在给定的网站上

时间:2013-01-25 16:11:51

标签: python segmentation-fault pyqt

我设法创建并线程化一个PyQt应用程序来做一些网址列表的截图。它的工作非常好,但它总是在一些网站上崩溃(或者至少肯定是这样)。

Softpedia.com就是其中之一。它只是在 loadFinished 事件之前使用分段错误导致Python崩溃。即使我不使用我的线程应用程序而是“原始”PyQt。

我使用基本PyQt based browser I found on the web进行了测试,我遇到了同样的问题。

有人有想法吗?我开始认为这可能是一个死胡同,这不是一个好消息。

谢谢大家!

1 个答案:

答案 0 :(得分:0)

您使用的代码可能存在某种问题,此代码不应引发错误:

#!/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_())