PyQt设置行高创建一个大行

2024-09-29 22:32:07 发布

您现在位置:Python中文网/ 问答频道 /正文

在PyQt中,我试图创建一个QTableWidget。这一切都很完美。但是,当我尝试调整行的大小时,除最后一行外,所有行都会调整大小。我不想使用setMaximumHeight,因为行数可能会有所不同

这是我的代码:

self.table = QtWidgets.QTableWidget()

self.table.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.table.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.table.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)

self.table.setAlternatingRowColors(True)
self.table.setStyleSheet("alternate-background-color: rgb(240, 240, 240);background-color: rgb(231, 231, 231);border-width: 0px; border-style: solid")
self.table.horizontalHeader().setStyleSheet("::section{Background-color:rgb(240, 240, 240); border: none; height: 70px}")
self.table.setFrameStyle(QtWidgets.QFrame.NoFrame)

self.table.setColumnCount(3)
self.table.setRowCount(7)

self.table.verticalHeader().setVisible(False)
self.table.setShowGrid(False)
self.table.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection)
self.table.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
self.table.setMinimumWidth(690)

self.horizontalHeader = self.table.horizontalHeader()
self.horizontalHeader.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
self.horizontalHeader.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
self.horizontalHeader.setSectionResizeMode(2, QtWidgets.QHeaderView.ResizeToContents)
self.horizontalHeader.setDefaultAlignment(Qt.AlignLeft)
self.horizontalHeader.setDefaultAlignment(Qt.AlignVCenter)

self.table.setHorizontalHeaderLabels(("Deck;Due;New").split(";"))

self.tableHeaderFont = self.table.horizontalHeader().font()
self.tableHeaderFont.setPointSize(10)
self.tableHeaderFont.setBold(True)
self.tableHeaderFont.setWeight(75)
self.table.horizontalHeader().setFont(self.tableHeaderFont)

self.verticalHeader = self.table.verticalHeader()
self.verticalHeader.setMinimumSectionSize(30)

for section in range(self.verticalHeader.count()):
    self.verticalHeader.resizeSection(section, 30)

这就是我得到的结果


Tags: selftablesectionrgbqtcolorborderqtwidgets
1条回答
网友
1楼 · 发布于 2024-09-29 22:32:07

您可以尝试在顶部设置大小策略。这就是我所做的:

self.table.setSizePolicy(QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Minimum)

总代码如下所示:

self.table = QtWidgets.QTableWidget()

self.table.setSizePolicy(QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Minimum)

self.table.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.table.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.table.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)

self.table.setAlternatingRowColors(True)
self.table.setStyleSheet("alternate-background-color: rgb(240, 240, 240);background-color: rgb(231, 231, 231);border-width: 0px; border-style: solid")
self.table.horizontalHeader().setStyleSheet("::section{Background-color:rgb(240, 240, 240); border: none; height: 70px}")
self.table.setFrameStyle(QtWidgets.QFrame.NoFrame)

self.table.setColumnCount(3)
self.table.setRowCount(7)

self.verticalHeader = self.table.verticalHeader()
self.verticalHeader.setMinimumSectionSize(30)
self.table.resizeRowsToContents()

for section in range(self.verticalHeader.count()):
    self.verticalHeader.resizeSection(section, 30)

self.table.verticalHeader().setVisible(False)
self.table.setShowGrid(False)
self.table.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection)
self.table.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
self.table.setMinimumWidth(690)

self.horizontalHeader = self.table.horizontalHeader()
self.horizontalHeader.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
self.horizontalHeader.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
self.horizontalHeader.setSectionResizeMode(2, QtWidgets.QHeaderView.ResizeToContents)
self.horizontalHeader.setDefaultAlignment(Qt.AlignLeft)
self.horizontalHeader.setDefaultAlignment(Qt.AlignVCenter)

self.table.setHorizontalHeaderLabels(("Name;Place;New").split(";"))

self.tableHeaderFont = self.table.horizontalHeader().font()
self.tableHeaderFont.setPointSize(10)
self.tableHeaderFont.setBold(True)
self.tableHeaderFont.setWeight(75)
self.table.horizontalHeader().setFont(self.tableHeaderFont)

相关问题 更多 >

    热门问题