0

PyQt4 の学習を始めたばかりで、シグナルとスロットで遊んでいます。サイトが完全にダウンロードされた後、この Web ページの html が出力されるようにコードを修正してください。現在、「ロード完了」後に停止するだけです

私のコード:

#! /usr/bin/env python2.7

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

class Browser(QObject):
    def __init__(self):
        QObject.__init__(self)
    def print_percent(self, percent):
        print percent
    def print_load_finished(self):
        print 'Load Finished'
        self.print_html
    def print_html(self, ok):
        frame = QWebView.page().mainFrame()
        print unicode(frame.toHtml()).encode('utf-8')

if __name__=='__main__':
    app = QApplication(sys.argv)
    view = QWebView()
    br = Browser()
    url = QUrl('http://python.org')
    view.loadFinished.connect(br.print_load_finished)
    view.loadProgress.connect(br.print_percent)
    view.load(url)
    view.show()
    app.exec_()
4

1 に答える 1

2

print_htmlメソッドを呼び出す必要があります。

 def print_load_finished(self):
        print 'Load Finished'
        self.print_html()

()の最後に注意してくださいprint_html

print_htmlただし、ビューにアクセスできないため、ビューを渡すことはできますが、オブジェクト指向プログラミングを行う正しい方法ではありません。may be から Browser を派生させQWebView、 のイベントにバインドする__init__必要があるため、次のようにする必要があります。

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

class Browser(QWebView):
    def __init__(self):
        super(Browser, self).__init__()
        self.loadFinished.connect(self.print_load_finished)
        self.loadProgress.connect(self.print_percent)

    def print_percent(self, percent):
        print percent

    def print_load_finished(self):
        print 'Load Finished'
        self.print_html()

    def print_html(self):
        frame = self.page().mainFrame()
        print unicode(frame.toHtml()).encode('utf-8')

if __name__=='__main__':
    app = QApplication(sys.argv)
    br = Browser()
    url = QUrl('http://python.org')
    br.load(url)
    br.show()
    app.exec_()
于 2012-11-15T19:11:04.867 に答える