2012-11-14 60 views
10

Cách hiển thị trang web ở định dạng HTML trong bảng điều khiển.Cách hiển thị html bằng QWebView. Python?

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> 

Trả lời

20

Như QT là một thư viện async, có thể bạn sẽ không có bất kỳ kết quả nếu bạn ngay lập tức cố gắng xem xét dữ liệu html của webview của bạn sau khi gọi tải, bởi vì nó sẽ trả về ngay lập tức, và sẽ kích hoạt loadFinished tín hiệu khi kết quả khả dụng. Tất nhiên bạn có thể thử truy cập dữ liệu html theo cách tương tự như tôi đã làm trong phương thức _result_available ngay sau khi gọi tải, nhưng nó sẽ trả lại một trang trống (đó là hành vi mặc định).

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

Cảm ơn bạn rất nhiều! Ví dụ của bạn thật tuyệt vời! – Vor

+1

Bạn được chào đón. – andrean

+0

Cảm ơn, nhưng khi tôi chạy _result_available() không bao giờ được gọi là mặc dù __init __ (self). – andyabel

Các vấn đề liên quan