【问题标题】:Remove horizontal gridlines from QTableWidget in PyQt从 PyQt 中的 QTableWidget 中删除水平网格线
【发布时间】:2020-04-25 08:57:45
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python pyqt qtablewidget


    【解决方案1】:

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

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

    这是一个简单的例子

    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

    【讨论】:

      猜你喜欢
      • 2017-06-17
      • 1970-01-01
      • 2011-09-25
      • 2019-06-13
      • 2013-10-12
      • 2021-11-03
      • 2017-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多