Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 调整PyQt中QTableWidget中标题的高度_Python_Pyqt_Pyqt5 - Fatal编程技术网

Python 调整PyQt中QTableWidget中标题的高度

Python 调整PyQt中QTableWidget中标题的高度,python,pyqt,pyqt5,Python,Pyqt,Pyqt5,我试图在我的应用程序中包含一个带有四列的QTableWidget,我需要标题中的列根据窗口大小进行拉伸。目前,这些列只占据一定的宽度,不会延伸到窗口 以下是我的问题的一个最小可验证示例: import sys from PyQt5 import QtWidgets class MyTable(QtWidgets.QTableWidget): def __init__(self, *args): QtWidgets.QTableWidget.__init__(self,

我试图在我的应用程序中包含一个带有四列的
QTableWidget
,我需要标题中的列根据窗口大小进行
拉伸。目前,这些列只占据一定的宽度,不会延伸到窗口

以下是我的问题的一个最小可验证示例:

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)
,这导致:

在上面的代码示例中,还有另一种可能会以不同的风格为您提供相同的目标。它已注释,但您是否应该使用它(而不是第一条指令):

,并且只有最后一列将拉伸:


我使用了setSectionResizeMode。工作起来很有魅力。但我现在需要的是根据单元格内容调整列宽的大小。虽然我使用了resizeCoulmnToContents()和ResizeZeroWSToContents,但事实并非如此work@North这个问题刚刚被打上了离题的烙印(虽然,从我的观点来看,它不是),而且似乎问题和答案都得到了某种“报复”的否决票。我认为你应该针对你的新问题提出另一个问题。试着举一个最小的可验证的例子(当问题被认为质量不高时,通常会被打上离题的标签)。请随意在我的答案中使用代码。我将编辑这个问题,以包含一个最小的可验证示例(因为它是一个相关的问题)。如果您对此不满意,请随时重新编辑或还原我的更改。
self.horizontalHeader().setStretchLastSection(True)