QtWebkit: слоты loadFinished и loadProgress никогда не выполняются

1

Вот базовый код PyQt для Webkit, который я тестировал.

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
from PyQt4.QtNetwork import *

class XPrinter(QObject):

    def __init__(self):
        QObject.__init__(self)

    def print_page_info(self, ok):
        print ok

    def print_load_started(self):
        print 'started loading'

    def print_load_percent(self, percent):
        print percent


app = QApplication(sys.argv)

web = QWebView()
xprinter = XPrinter()
QObject.connect(web, SIGNAL("loadFinished()"), xprinter.print_page_info)
QObject.connect(web, SIGNAL("loadStarted()"), xprinter.print_load_started)
QObject.connect(web, SIGNAL("loadProgress()"), xprinter.print_load_percent)
web.load(QUrl("http://www.gnu.org"))
web.setWindowState(Qt.WindowMaximized)
web.show()

sys.exit(app.exec_())

Я столкнулся с проблемой, что слоты loadFinished и loadProgress никогда не выполняются. Скажите, пожалуйста, где я делаю это неправильно?

Теги:
qt
pyqt
qtwebkit

1 ответ

4
Лучший ответ

Попробуйте использовать новые сигналы стиля

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
from PyQt4.QtNetwork import *

class XPrinter(QObject):

    def __init__(self):
        QObject.__init__(self)

    def print_page_info(self, ok):
        print ok

    def print_load_started(self):
        print 'started loading'

    def print_load_percent(self, percent):
        print percent


app = QApplication(sys.argv)

web = QWebView()
xprinter = XPrinter()
web.loadFinished.connect(xprinter.print_page_info)
web.loadStarted.connect(xprinter.print_load_started)
web.loadProgress.connect(xprinter.print_load_percent)

web.load(QUrl("http://www.gnu.org"))
web.setWindowState(Qt.WindowMaximized)
web.show()

sys.exit(app.exec_())

EDIT: Также у вас были неправильные подписи QWebview

QObject.connect(web, SIGNAL("loadFinished(bool)"), xprinter.print_page_info)
QObject.connect(web, SIGNAL("loadStarted()"), xprinter.print_load_started)
QObject.connect(web, SIGNAL("loadProgress(int )"), xprinter.print_load_percent)
  • 0
    Да, это работает. Однако я пытаюсь выяснить, почему оригинальный код не работал.
  • 0
    Спасибо, что ваша редакция помогла :) Однако с новыми сигналами стиля лучше работать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню