PyQt QtWebKit loadFinished не вызывается

У меня есть этот скрипт, с которым я хотел бы сделать еще кое-что, когда он будет готов:

from PyQt4 import QtCore, QtGui, QtWebKit

class WebViewCreator:
    def __init__(self):

        self.view = QtWebKit.QWebView()
        self.view.setPage(QtWebKit.QWebPage())

        self.view.connect(self.view, QtCore.SIGNAL('loadFinished(bool)'), self.load_finished)

        path = self.app.resources_uri() + "/index.html"
        self.view.load(QtCore.QUrl(path))

    def load_finished(self, ok):
        print ok

def onDone(ok):
    print ok

У меня проблема в том, что если я подключаю функцию к сигналу loadFinished(bool), то функция выполняется, но если я подключаю метод объекта, такой как self.load_finished, то этот метод не вызывается, и я не могу понять, почему :-/

То же самое происходит с:

self.view.loadFinished.connect(onDone)

против:

self.view.loadFinished.connect(self.load_finished)

person Jeena    schedule 15.11.2012    source источник


Ответы (1)


В коде, который вы разместили, нет ничего явно плохого.

То есть, когда я запускаю эту слегка упрощенную версию, она успешно загружает страницу и (в конце концов) печатает True:

from PyQt4 import QtCore, QtGui, QtWebKit

class WebViewCreator(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.view = QtWebKit.QWebView(self)
        self.view.loadFinished.connect(self.load_finished)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.view)
        self.view.load(QtCore.QUrl('http://stackoverflow.com/'))

    def load_finished(self, ok):
        print ok

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = WebViewCreator()
    window.show()
    sys.exit(app.exec_())

Это использует Python 2.7.3, Qt 4.8.3 и PyQt 4.9.5 в Linux.

person ekhumoro    schedule 16.11.2012
comment
Спасибо большое, весь вечер возился, внесу те же изменения и перейду к следующему заданию, хотя пока не понимаю, что я делал не так ;) - person Jeena; 16.11.2012