所以我生成了這個 html 檔案,pandas.Styler.to_html()并希望在 Qt 應用程式中顯示。
我無法修改列寬。當我在瀏覽器中打開 html 檔案時,寬度是正確的,但是,在 qt 應用程式上,寬度總是會根據文本進行調整。
這是它在我的應用程式中的外觀:

這是它在我的瀏覽器上的外觀(這就是我想要的):

注意:-我希望標記為 29 和 30 的列的大小相同,無論里面的文本如何。- 我試過把寬度放在各個部分,但沒有運氣 - 我對 html 了解不多(你可能已經注意到了)
這是一個MWE:
from PyQt5.QtWidgets import QTextBrowser, QApplication
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
text_browser = QTextBrowser()
html_s = """
<style type="text/css">
#T_727b1 th {
border: 1px black solid !important;
text-align: center;
line-height: 5px;
font-size: 10px;
background-color: gainsboro;
}
#T_727b1 td {
border: 1px black solid !important;
}
#T_727b1_row0_col0 {
width: 30px;
}
#T_727b1_row0_col1 {
width: 30px;
}
</style>
<table id="T_727b1">
<thead>
<tr>
<th id="T_727b1_level0_col0" class="col_heading level0 col0" colspan="2">15</th>
</tr>
<tr>
<th id="T_727b1_level1_col0" class="col_heading level1 col0" >29</th>
<th id="T_727b1_level1_col1" class="col_heading level1 col1" >30</th>
</tr>
</thead>
<tbody>
<tr>
<td id="T_727b1_row0_col0" class="data row0 col0" >1.24</td>
<td id="T_727b1_row0_col1" class="data row0 col1" >1.15234</td>
</tr>
</tbody>
</table>
"""
text_browser.setText(html_s)
text_browser.show()
text_browser.raise_()
sys.exit(app.exec_())
uj5u.com熱心網友回復:
需要記住的重要一點是,Qt 標準小部件中使用的“HTML”并不是普通(和現代)意義上的:在 Qt 中像在標準 Web 瀏覽器中一樣獲得可靠的 HTML 表示的唯一方法是通過QtWebEngine 模塊(通常帶有 QWebEngineView)。
除此之外,所有可以顯示格式化文本的Qt 小部件[1]都使用QTextDocument API,它僅支持有限的 HTML 子集(基于 HTML 4.01 規范)和 CSS(基于 CSS 2.1 規范)。如果你年紀夠大,你可以想象它在 2000 年瀏覽時類似于標準網頁的支持。
“基于”的概念至關重要:HTML 內容被決議并轉換為 QTextDocument 結構,它不提供上述官方規范的全面支持:例如,您不能使用框架(所以,不完全是“2000 年”......)或 iframe。
事實上,如果您再次嘗試檢索小部件的 html,您將不會獲得與您最初使用的源相同的 HTML 內容[2]。
這樣做的原因顯然是性能:提供可在 UI 元素中使用的基本文本格式功能(類似于舊的 RTF 格式),而無需處理負載(CPU 和 RAM),一個全功能的 HTML/CSS 引擎將需要. 這允許輕松快速地顯示成百上千個專案的基本格式化內容,如標簽或專案視圖(如表格,可以有數萬個元素):如果您只想顯示一些標簽或表格單元格文本行和一些粗體字,加載整個 HTML 引擎并用它處理每一個是沒有意義的。
現在,根據上面的檔案,我們可以清楚地看到對表格寬度的唯一可用支持是通過舊的僅標記屬性 ( <... width=...>),因為在受支持的 CSS 屬性串列中沒有width對該屬性的參考。
<td id="T_727b1_row0_col0" class="data row0 col0" width=40>1.24</td>
<td id="T_727b1_row0_col1" class="data row0 col1" width=40>1.15234</td>
^^^^^^^^
順便說一句,所有這些還導致必須考慮的其他重要方面:
!important被完全忽略;- 任何原始
<style>標簽都不會保留在 HTML 輸出中:任何樣式都應用于每個單獨的文本元素,并<style>根據檔案默認值創建一個新標簽; - 類不保留在 HTML 輸出中;
- ids 不是這樣保留的,而是作為錨名稱匯出的,并且僅用于文本片段(段落、跨度、表格單元格),而不用于框架容器(表格);
[1] QLabel、QTextEdit、QTextBrowser(因為繼承了QTextEdit)和QGraphicsTextItem;
[2] 唯一的例外是 QLabel,它總是回傳用于 的相同源字串setText(),但不允許訪問用于顯示和鍵盤/滑鼠互動的 QTextDocument;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/513272.html
上一篇:QCommandLineParser--help和--help-all選項未翻譯
下一篇:懸停時滑動影片文本
