1

我设法创建并线程化了一个 PyQt 应用程序,以对 url 列表进行一些截图。它工作得非常好,但它总是在某些网站上崩溃(或者至少肯定会崩溃)。

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

我用我在网上找到的基于 PyQt 的基本浏览器进行了测试,我遇到了同样的问题。

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

谢谢你们!

4

1 回答 1

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_())
于 2013-01-26T12:06:38.653 回答