Как передать 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())