Here is what i try:
File: table.py:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'table.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(400, 300)
self.gridLayout = QtWidgets.QGridLayout(Dialog)
self.gridLayout.setObjectName("gridLayout")
self.tableWidget = QtWidgets.QTableWidget(Dialog)
self.tableWidget.setFocusPolicy(QtCore.Qt.NoFocus)
self.tableWidget.setStyleSheet("QHeaderView::section{\n"
" padding:10px;\n"
" background:rgb(155, 255, 148);\n"
"}\n"
"\n"
"QHeaderView::section:horizontal{\n"
" border:1px solid #ABABAB;\n"
" border-left:none;\n"
"}\n"
"\n"
"QHeaderView::section:vertical{\n"
" border:1px solid #ABABAB;\n"
" border-top:none;\n"
"}\n"
"\n"
"QTableCornerButton::section{\n"
" background:white;\n"
" border:1px solid #ABABAB;\n"
" border-left:none;\n"
" border-top:none;\n"
"}")
self.tableWidget.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
self.tableWidget.setShowGrid(False)
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(20)
self.tableWidget.setRowCount(18)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(2, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(3, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(4, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(5, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(6, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(7, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(8, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(9, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(10, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(11, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(12, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(13, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(14, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(15, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(16, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(17, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(2, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(3, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(4, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(5, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(6, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(7, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(8, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(9, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(10, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(11, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(12, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(13, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(14, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(15, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(16, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(17, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(18, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(19, item)
self.tableWidget.horizontalHeader().setHighlightSections(False)
self.gridLayout.addWidget(self.tableWidget, 0, 0, 1, 1)
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
item = self.tableWidget.verticalHeaderItem(0)
item.setText(_translate("Dialog", "New Row"))
item = self.tableWidget.verticalHeaderItem(1)
item.setText(_translate("Dialog", "New Row"))
item = self.tableWidget.verticalHeaderItem(2)
item.setText(_translate("Dialog", "New Row"))
item = self.tableWidget.verticalHeaderItem(3)
item.setText(_translate("Dialog", "New Row"))
item = self.tableWidget.verticalHeaderItem(4)
item.setText(_translate("Dialog", "New Row"))
item = self.tableWidget.verticalHeaderItem(5)
item.setText(_translate("Dialog", "New Row"))
item = self.tableWidget.verticalHeaderItem(6)
item.setText(_translate("Dialog", "New Row"))
item = self.tableWidget.verticalHeaderItem(7)
item.setText(_translate("Dialog", "New Row"))
item = self.tableWidget.verticalHeaderItem(8)
item.setText(_translate("Dialog", "New Row"))
item = self.tableWidget.verticalHeaderItem(9)
item.setText(_translate("Dialog", "New Row"))
item = self.tableWidget.verticalHeaderItem(10)
item.setText(_translate("Dialog", "New Row"))
item = self.tableWidget.verticalHeaderItem(11)
item.setText(_translate("Dialog", "New Row"))
item = self.tableWidget.verticalHeaderItem(12)
item.setText(_translate("Dialog", "New Row"))
item = self.tableWidget.verticalHeaderItem(13)
item.setText(_translate("Dialog", "New Row"))
item = self.tableWidget.verticalHeaderItem(14)
item.setText(_translate("Dialog", "New Row"))
item = self.tableWidget.verticalHeaderItem(15)
item.setText(_translate("Dialog", "New Row"))
item = self.tableWidget.verticalHeaderItem(16)
item.setText(_translate("Dialog", "New Row"))
item = self.tableWidget.verticalHeaderItem(17)
item.setText(_translate("Dialog", "New Row"))
item = self.tableWidget.horizontalHeaderItem(0)
item.setText(_translate("Dialog", "New Column"))
item = self.tableWidget.horizontalHeaderItem(1)
item.setText(_translate("Dialog", "New Column"))
item = self.tableWidget.horizontalHeaderItem(2)
item.setText(_translate("Dialog", "New Column"))
item = self.tableWidget.horizontalHeaderItem(3)
item.setText(_translate("Dialog", "New Column"))
item = self.tableWidget.horizontalHeaderItem(4)
item.setText(_translate("Dialog", "New Column"))
item = self.tableWidget.horizontalHeaderItem(5)
item.setText(_translate("Dialog", "New Column"))
item = self.tableWidget.horizontalHeaderItem(6)
item.setText(_translate("Dialog", "New Column"))
item = self.tableWidget.horizontalHeaderItem(7)
item.setText(_translate("Dialog", "New Column"))
item = self.tableWidget.horizontalHeaderItem(8)
item.setText(_translate("Dialog", "New Column"))
item = self.tableWidget.horizontalHeaderItem(9)
item.setText(_translate("Dialog", "New Column"))
item = self.tableWidget.horizontalHeaderItem(10)
item.setText(_translate("Dialog", "New Column"))
item = self.tableWidget.horizontalHeaderItem(11)
item.setText(_translate("Dialog", "New Column"))
item = self.tableWidget.horizontalHeaderItem(12)
item.setText(_translate("Dialog", "New Column"))
item = self.tableWidget.horizontalHeaderItem(13)
item.setText(_translate("Dialog", "New Column"))
item = self.tableWidget.horizontalHeaderItem(14)
item.setText(_translate("Dialog", "New Column"))
item = self.tableWidget.horizontalHeaderItem(15)
item.setText(_translate("Dialog", "New Column"))
item = self.tableWidget.horizontalHeaderItem(16)
item.setText(_translate("Dialog", "New Column"))
item = self.tableWidget.horizontalHeaderItem(17)
item.setText(_translate("Dialog", "New Column"))
item = self.tableWidget.horizontalHeaderItem(18)
item.setText(_translate("Dialog", "New Column"))
item = self.tableWidget.horizontalHeaderItem(19)
item.setText(_translate("Dialog", "New Column"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
File: run_me.py:
from PyQt5 import QtWidgets, QtCore, QtGui
from table import Ui_Dialog
import os
import sys
class Run_me:
def __init__(self):
self.app = QtWidgets.QApplication(sys.argv)
self.app.setStyle("Fusion")
self.Dialog = QtWidgets.QDialog()
self.ui = Ui_Dialog()
self.ui.setupUi(self.Dialog)
self.Dialog.show()
self.ui.tableWidget.setItemDelegate(GridDelegate(self.ui.tableWidget))
sys.exit(self.app.exec_())
class GridDelegate(QtWidgets.QStyledItemDelegate):
pen = QtGui.QPen(QtGui.QColor('#000000'), 1)
def paint(self, qp, opt, index):
qp.save()
qp.setPen(self.pen)
qp.setBrush(QtCore.Qt.NoBrush)
lastRow = index.model().rowCount() - 1
lastCol = index.model().columnCount() - 1
if index.row() < lastRow and index.column() < lastCol:
qp.drawLine(opt.rect.bottomLeft(), opt.rect.bottomRight())
qp.drawLine(opt.rect.topRight(), opt.rect.bottomRight())
elif index.row() == lastRow and index.column() == lastCol:
pass
elif index.row() == lastRow:
qp.drawLine(opt.rect.topRight(), opt.rect.bottomRight())
elif index.column() == lastCol:
qp.drawLine(opt.rect.bottomLeft(), opt.rect.bottomRight())
qp.restore()
super().paint(qp, opt, index)
if __name__ == "__main__":
program = Run_me()
Result:
2023-11-23 20 30 10.png