1

なんとかPyQtアプリケーションを作成してスレッド化し、URLのリストのスクリーンショットを作成しました。それは本当にうまく機能していますが、いくつかのウェブサイトでは常にクラッシュしています(または少なくとも確実に)。

Softpedia.comはその1つです。loadFinishedイベントの直前にセグメンテーション違反でPythonがクラッシュしているだけです。スレッド化されたアプリケーションを使用せず、「生の」PyQtを使用している場合でも。

Webで見つけた基本的な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 に答える