在QTextBrowser(PyQt)中不显示的HTML文本

时间:2016-04-29 17:27:41

标签: python server pyqt client qtextbrowser

我编写了一个简单的浏览器程序,在QTextBrowser中显示html内容。在那个html内容中我有一个超链接,我希望超链接打开一个不同的页面(显示从服务器收到的html内容)。所以基本上用户输入" server"在URL框中,服务器向客户端(浏览器)发送一些html数据,然后在QTextBrowser中显示后,用户可以单击该链接。单击链接后,客户端请求另一页。然后,服务器通过发送html数据来完成此请求,然后浏览器应再次显示html内容。我的代码的问题是,在第二次请求之后,即使所有功能都正常工作,也不会显示html数据。可能是什么问题呢?

class Browser(QtGui.QMainWindow):
    def __init__(self):
        super(Browser, self).__init__()
        self.ui = uic.loadUi('gui_browser.ui')

        self.csi_thread = Client_Server_Interactive_Thread()
        self.connect(self.csi_thread, QtCore.SIGNAL("display_html(QString)"), self.display_html)

        self.ui.txt_browser.setOpenExternalLinks(True)
        self.connect(self.ui.txt_browser,
                 QtCore.SIGNAL('anchorClicked(const QUrl &)'),
                 self.anchorClickedHandler)

    def anchorClickedHandler(self):
        self.ui.txt_browser.setSource(QtCore.QUrl("html_file.html"))
        send_msg('link') # sends the server a request

    def display_html(self, data):
        temp_html_file = open('html_file.html', 'w')
        temp_html_file.write(data)
        temp_html_file.close()
        self.ui.txt_browser.setText(data)
        self.parse_document(data)

class Client_Server_Interactive_Thread(QtCore.QThread):
    def __init__(self):
        super().__init__()

    def run(self):
        socket_create()
        while True:
            msg = listen_for_msg()
            self.emit(QtCore.SIGNAL('display_html(QString)'), msg)

0 个答案:

没有答案