在 PyQt 中调整 QTableWidget 中 header 的高度
Resize the height of the header in QTableWidget in PyQt
我想在我的应用程序中包含一个包含四列的 QTableWidget
,并且我需要根据 window 大小从 header 到 stretch
中的列。目前,列只占用一定的宽度,不会延伸到 window.
这是我的问题的最小可验证示例:
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)
如果您要重新实现一个 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)
,结果是:
在上面的代码示例中,还有另一种可能性,它会给你相同的 objective 但风格不同。它被评论了,但你应该使用它(而不是第一条指令):
self.horizontalHeader().setStretchLastSection(True)
,只有最后一列会拉伸:
我想在我的应用程序中包含一个包含四列的 QTableWidget
,并且我需要根据 window 大小从 header 到 stretch
中的列。目前,列只占用一定的宽度,不会延伸到 window.
这是我的问题的最小可验证示例:
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)
如果您要重新实现一个 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)
,结果是:
在上面的代码示例中,还有另一种可能性,它会给你相同的 objective 但风格不同。它被评论了,但你应该使用它(而不是第一条指令):
self.horizontalHeader().setStretchLastSection(True)
,只有最后一列会拉伸: