Как передать HTML в QTextEdit?

def log_txt(self, data):
    self.lst_list = []
    self.lst_list = data.index.tolist()

    data_txt = f'''
                    <table style="border-collapse: collapse; width: 100%;">
                        <tr style="background-color: #f2f2f2;">
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">Sec</th>
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">Open Cost</th>
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">High</th>
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">Low</th>
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">Close Cost</th>
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">Volume</th>
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">Min Count</th>
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">Max Val</th>
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">Comiss Val</th>
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">Val Speed</th>
                        </tr>
                        '''

    for s in self.lst_list:
        sec = round_txt(str(s), 4)
        open_cost = round_txt(float(data.loc[s, 'open']), 15)
        high = round_txt(float(data.loc[s, 'high']), 15)
        low = round_txt(float(data.loc[s, 'low']), 15)
        close_cost = round_txt(float(data.loc[s, 'close']), 15)
        volume = round_txt(int(data.loc[s, 'volume']), 15)
        val_speed = round_txt(str(data.loc[s, 'val_speed']), 80)
        min_count = round_txt(int(data.loc[s, 'min_count']), 15)
        max_val = round_txt(float(data.loc[s, 'max_val']), 15)
        comiss_val = round_txt(float(data.loc[s, 'comiss_val']), 15)

        data_txt += f'''
                        <tr>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{sec}</td>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{open_cost}</td>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{high}</td>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{low}</td>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{close_cost}</td>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{volume}</td>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{min_count}</td>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{max_val}</td>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{comiss_val}</td>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{val_speed}</td>
                        </tr>
                        '''
    data_txt += '</table>'
    self.ui.textEdit_loggirovanie.setHtml(data_txt)

Пытаюсь вывести таблицу в html с переменными в QtextEdit.. Можете подсказать почему может не работать? Если выводить в plainTextEdit как текст все нормально работает..


Ответы (1 шт):

Автор решения: eri

У меня всё работает. Возможно Вы что-то не то поставили при проектировании в ui файле. И даже если просто вставить <table> без html\body

import sys
from PySide6 import QtCore, QtWidgets, QtGui

class MyWidget(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()

        table = """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css">
p, li { white-space: pre-wrap; }
hr { height: 1px; border-width: 0; }
li.unchecked::marker { content: "\2610"; }
li.checked::marker { content: "\2612"; }
</style></head><body style=" font-family:'Segoe UI'; font-size:9pt; font-weight:400; font-style:normal;">
<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br />
                      
                      <table style="border-collapse: collapse; width: 100%;">
                        <tr style="background-color: #f2f2f2;">
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">Sec</th>
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">Open Cost</th>
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">High</th>
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">Low</th>
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">Close Cost</th>
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">Volume</th>
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">Min Count</th>
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">Max Val</th>
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">Comiss Val</th>
                            <th style="border: 1px solid #dddddd; padding: 8px; text-align: left;">Val Speed</th>
                        </tr>
                      <tr>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{sec}</td>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{open_cost}</td>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{high}</td>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{low}</td>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{close_cost}</td>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{volume}</td>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{min_count}</td>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{max_val}</td>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{comiss_val}</td>
                            <td style="border: 1px solid #dddddd; padding: 8px;">{val_speed}</td>
                        </tr>
                      </table>
                      
                      </p></body></html>"""

        self.text = QtWidgets.QTextEdit('',
                                     alignment=QtCore.Qt.AlignCenter)

        self.text.setHtml(table)

        self.layout = QtWidgets.QVBoxLayout(self)
        self.layout.addWidget(self.text)



if __name__ == "__main__":
    app = QtWidgets.QApplication([])

    widget = MyWidget()
    widget.resize(800, 600)
    widget.show()

    sys.exit(app.exec())

введите сюда описание изображения

→ Ссылка