在 PyQt 中调整 QTableWidget 中标题的高度
Posted
技术标签:
【中文标题】在 PyQt 中调整 QTableWidget 中标题的高度【英文标题】:Resize the height of the header in QTableWidget in PyQt 【发布时间】:2016-05-27 06:06:19 【问题描述】:我试图在我的应用程序中包含一个QTableWidget
,它有四列,我需要根据窗口大小将标题中的列添加到stretch
。目前,列仅占一定宽度,不会延伸到窗口。
这是我的问题的最小可验证示例:
import sys
from PyQt5 import QtWidgets
class MyTable(QtWidgets.QTableWidget):
def __init__(self, *args):
QtWidgets.QTableWidget.__init__(self, *args)
self.setheader()
self.resizeColumnsToContents()
self.resizeRowsToContents()
def setheader(self):
self.setHorizontalHeaderLabels(['Label 1', 'Label 2', 'Label 3'])
def main(args):
app = QtWidgets.QApplication(args)
table = MyTable(5, 3)
table.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main(sys.argv)
【问题讨论】:
【参考方案1】:如果您要重新实现QTableWidget
,这是实现拉伸效果所需的指令:
self.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
你从QTableWidget
调用QHeaderView
并给它Stretch
指令。下面的例子是一个有效的实现:
import sys
from PyQt5 import QtWidgets
class MyTable(QtWidgets.QTableWidget):
def __init__(self, *args):
QtWidgets.QTableWidget.__init__(self, *args)
self.setheader()
self.resizeColumnsToContents()
self.resizeRowsToContents()
def setheader(self):
self.setHorizontalHeaderLabels(['Label 1', 'Label 2', 'Label 3'])
self.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
#self.horizontalHeader().setStretchLastSection(True) # This is another possible option
def main(args):
app = QtWidgets.QApplication(args)
table = MyTable(5, 3)
table.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main(sys.argv)
,结果如下:
在上面的代码示例中,还有另一种可能性,它可以为您提供不同风格的相同目标。它已被注释,但你应该使用它(而不是第一条指令):
self.horizontalHeader().setStretchLastSection(True)
,只有最后一列会拉伸:
【讨论】:
我使用了 setSectionResizeMode。奇迹般有效。但我现在需要的是根据单元格内容调整列宽。虽然我用过 resizeCoulmnToContents() 和 resizeRowsToContents,但还是不行 @North 这个问题刚刚被标记为离题(尽管从我的角度来看,它不是)而且似乎问题和答案都受到了某种“报复”的反对。我认为您应该针对您的新问题提出另一个问题。尝试放置一个最小可验证示例(当问题被认为是低质量时,通常会被标记为离题)。随意在我的答案中使用代码。我将编辑此问题以包含一个最少可验证的示例(因为它是一个相关问题)。如果您不满意,请随时重新编辑或恢复我的更改。以上是关于在 PyQt 中调整 QTableWidget 中标题的高度的主要内容,如果未能解决你的问题,请参考以下文章
在 pyqt5 QTableWidget 中应用样式:已选择
如何在pyqt中更改Qtablewidget的特定单元格背景颜色