Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 是否删除QTableView()最后一行下方的灰色条带而不拉伸单元格?_Python_Python 3.x_Pyqt_Pyqt5_Qheaderview - Fatal编程技术网

Python 是否删除QTableView()最后一行下方的灰色条带而不拉伸单元格?

Python 是否删除QTableView()最后一行下方的灰色条带而不拉伸单元格?,python,python-3.x,pyqt,pyqt5,qheaderview,Python,Python 3.x,Pyqt,Pyqt5,Qheaderview,相关位置的给定值将删除给定图像中显示的灰色带。如果您将QtWidgets.QHeaderView.Stretch更改为QtWidgets.QHeaderView.Fixed,如下面脚本中所述,此灰色带将返回,单元格将以垂直或水平方式固定 所需要的是在不调整单元格高度或宽度的情况下删除灰色条带 注1:原始图像来自用户 守则: import sys from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtCore import Qt cla

相关位置的给定值将删除给定图像中显示的灰色带。如果您将
QtWidgets.QHeaderView.Stretch
更改为
QtWidgets.QHeaderView.Fixed
,如下面脚本中所述,此灰色带将返回,单元格将以垂直或水平方式固定

所需要的是在不调整单元格高度或宽度的情况下删除灰色条带

注1:原始图像来自用户

守则:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt


class TableModel(QtCore.QAbstractTableModel):
    def __init__(self, data):
        super(TableModel, self).__init__()
        self._data = data

    def data(self, index, role):
        if role == Qt.DisplayRole:
            return self._data[index.row()][index.column()]

    def rowCount(self, index):
        return len(self._data)

    def columnCount(self, index):
        return len(self._data[0])
    
    def headerData(self, section, orientation, role):
        # section is the index of the column/row.
        if role == Qt.DisplayRole:
            if orientation == Qt.Horizontal:
                column_label = ['A', 'B1', 'B2']
                return column_label[section]

            if orientation == Qt.Vertical:
                row_label = ['Device', 'ID', 'Operation', 'Weigth', 'Row 5', 'No Show']
                return row_label[section]


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()

        self.table = QtWidgets.QTableView()

        data = [
          [4, 9, 2],
          [1, 0, 0],
          [3, 5, 0],
          [3, 3, 2],
          [7, 8, 9],
        ]
        
        self.model = TableModel(data)
#        self.table.verticalHeader().setDefaultSectionSize(50) # does not sove it.

#        self.table.verticalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
        self.table.verticalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Fixed)
        
#        self.table.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
        self.table.setModel(self.model)

        self.setCentralWidget(self.table)


app=QtWidgets.QApplication(sys.argv)
window=MainWindow()
window.show()
app.exec_()

注2:可以找到Martin Fitzpatrick的原始代码,并在此处进行修改以显示问题。

解决方案是创建一个QHeaderView,其中没有内容的零件已绘制:

class VerticalHeaderView(qtwidts.QHeaderView):
def uuu init uuu(self,parent=None):
super()
def paintEvent(自身,事件):
super().paintEvent(事件)
h=自偏移量()
对于范围内的i(self.count()):
h+=自截面尺寸(i)
如果h
header=VerticalHeaderView(self.table)
self.table.setVerticalHeader(标题)

解决方案是创建一个QHeaderView,其中没有内容的零件被绘制:

class VerticalHeaderView(qtwidts.QHeaderView):
def uuu init uuu(self,parent=None):
super()
def paintEvent(自身,事件):
super().paintEvent(事件)
h=自偏移量()
对于范围内的i(self.count()):
h+=自截面尺寸(i)
如果h
header=VerticalHeaderView(self.table)
self.table.setVerticalHeader(标题)

谢谢,这部分起到了作用。当header=VerticalHeaderView(self.table)时,发布的解决方案有效。。etc.放在self.table.verticalHeader()setStyleSheet之前(“边框:1px;右边框:1px纯黑;”)。我对HorizontalHeader也做了同样的操作,但是没有显示实线。另一种方法同样有效,但实线将永远延续下去。所以我想这应该通过给第0列中的单元格左边框着色来实现?或者第0列的左边框。谢谢,这在一定程度上起到了作用。当header=VerticalHeaderView(self.table)时,发布的解决方案有效。。etc.放在self.table.verticalHeader()setStyleSheet之前(“边框:1px;右边框:1px纯黑;”)。我对HorizontalHeader也做了同样的操作,但是没有显示实线。另一种方法同样有效,但实线将永远延续下去。所以我想这应该通过给第0列中的单元格左边框着色来实现?或列0的左边框。