2012-11-14 81 views
10

如何在控制檯中以HTML格式顯示網頁。如何使用QWebView顯示html。蟒蛇?

import sys 
from PyQt4.QtGui import QApplication 
from PyQt4.QtCore import QUrl 
from PyQt4.QtWebKit import QWebView 

app = QApplication(sys.argv) 
view = QWebView() 
view.load(QUrl('http://example.com') 
# What's next? how to do something like: 
# print view.read() ??? 
# to display something similar to that: 
# <html><head></head><body></body></html> 

回答

20

由於QT是一個異步庫,你可能不會有任何結果,如果您立即嘗試看看你的WebView的HTML數據調用負荷後,因爲它立即返回,並且會觸發loadFinished一旦結果可用,就發出信號。在調用加載後,您當然可以嘗試訪問html數據,就像我在_result_available方法中一樣,但它會返回一個空白頁面(這是默認行爲)。

import sys 
from PyQt4.QtGui import QApplication 
from PyQt4.QtCore import QUrl 
from PyQt4.QtWebKit import QWebView 


class Browser(QWebView): 

    def __init__(self): 
     QWebView.__init__(self) 
     self.loadFinished.connect(self._result_available) 

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

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    view = Browser() 
    view.load(QUrl('http://www.google.com')) 
    app.exec_() 
+1

非常感謝!你的例子太棒了! – Vor

+1

不客氣。 – andrean

+0

謝謝,但是當我運行這個_result_available()時,雖然__init __(self)不會調用。 – andyabel