python - 从 PyQt 中的 QTableWidget 中删除水平网格线

标签 python pyqt qtablewidget

我一直在谷歌搜索这个问题并阅读 qt 文档,但我能找到的所有答案都是为 Qt for C++ 编写的

我正在尝试了解如何从 QTableWidget 中删除所有水平网格线,就像这里的那样

QTableWidget

使表格看起来像一个包含行和列的列表

我试过使用样式表来改变小部件的外观,但它们似乎对表格的外观没有影响

最佳答案

我认为没有内置方法,但是您可以通过样式表删除水平网格线,方法是使用 setShowGrid(False) 禁用网格线,然后使用 绘制垂直线边框QTableView::item 选择器和 border-right 样式如下:

tableWidget.setShowGrid(False)
tableWidget.setStyleSheet('QTableView::item {border-right: 1px solid #d6d9dc;}')

enter image description here

这是一个简单的例子

from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QVBoxLayout
import sys

class Table(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(0, 0, 300, 200)
        self.create_table()
        self.layout = QVBoxLayout()
        self.layout.addWidget(self.tableWidget) 
        self.setLayout(self.layout) 
        self.show()

    def create_table(self):
        self.tableWidget = QTableWidget()
        self.tableWidget.setRowCount(4)
        self.tableWidget.setColumnCount(2)
        self.tableWidget.setItem(0,0, QTableWidgetItem("Cell (1,1)"))
        self.tableWidget.setItem(0,1, QTableWidgetItem("Cell (1,2)"))
        self.tableWidget.setItem(1,0, QTableWidgetItem("Cell (2,1)"))
        self.tableWidget.setItem(1,1, QTableWidgetItem("Cell (2,2)"))
        self.tableWidget.setItem(2,0, QTableWidgetItem("Cell (3,1)"))
        self.tableWidget.setItem(2,1, QTableWidgetItem("Cell (3,2)"))
        self.tableWidget.setItem(3,0, QTableWidgetItem("Cell (4,1)"))
        self.tableWidget.setItem(3,1, QTableWidgetItem("Cell (4,2)"))
        self.tableWidget.move(0,0)

        # Remove horizontal gridlines
        self.tableWidget.setShowGrid(False)
        self.tableWidget.setStyleSheet('QTableView::item {border-right: 1px solid #d6d9dc;}')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    table = Table()
    sys.exit(app.exec_())  

注意:如果您想删除垂直网格线,请将样式从 border-right 更改为 border-bottom

enter image description here

关于python - 从 PyQt 中的 QTableWidget 中删除水平网格线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59635423/

相关文章:

python - Tkinter 网格管理器无法管理 'top level window' 菜单

python - 在迁移中保留数据

qt - 拖放按钮和下拉菜单 PyQt/Qt designer

drag-and-drop - 从 QTabWidget 拖放选项卡

带有样式表的 QTableWidget 不滚动项目

python - 属性错误 : 'numpy.ndarray' object has no attribute 'step'

python - 如何在 Atom 中切换到不同的 python 版本?

python - 获取 TableView 标题的值

python - 在 PyQt 中创建动态按钮

python - 从列中检索数据 qtablewidget