如何创建只读表而不能选择、编辑表的内容及其大小。
我无法编辑表格中的内容及其大小,并且我想通过创建两个表格并使用样式表将选择颜色更改为背景颜色来制造无法选择的错觉,但是我没有找到如何删除虚线并调整行列的大小。
现在看起来像这样:
我希望它看起来像这样:
我的代码:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(440, 450)
MainWindow.setStyleSheet("background-color: #ffffff")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setStyleSheet("QTableWidget {\n"
" selection-background-color: #ffffff;\n"
" selection-color: #000000;\n"
" gridline-color: #000000;\n"
"}\n"
"QHeaderView::section {\n"
" background-color: #cccccc;\n"
" border-style: none;\n"
" border-bottom: 1px solid #000000;\n"
" border-right: 1px solid #000000;\n"
"}\n"
"QTableWidget QTableCornerButton::section {\n"
" background-color: #cccccc;\n"
" border: 1px solid #000000;\n"
"}\n"
"QHeaderView::section:horizontal\n"
"{\n"
" border-top: 1px solid #000000;\n"
"}\n"
"QHeaderView::section:vertical\n"
"{\n"
" border-left: 1px solid #000000;\n"
"}\n"
"QTableWidget {\n"
" border: 0px solid ;\n"
"}\n"
"/*QScrollBar*/\n"
"QScrollBar:horizontal {\n"
" border-radius: 10;\n"
" border: 2px solid #3d3d3d;\n"
" background: #595959;\n"
"}\n"
"QScrollBar::handle:horizontal {\n"
" border-radius: 8;\n"
" background: #ffffff;\n"
" min-width: 20px;\n"
"}\n"
"QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {\n"
" border: none;\n"
" background: none;\n"
"}\n"
"QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal{\n"
" background: none;\n"
"}\n"
"\n"
"QScrollBar:vertical {\n"
" border-radius: 10;\n"
" border: 2px solid #3d3d3d;\n"
" background: #595959;\n"
"}\n"
"QScrollBar::handle:vertical {\n"
" border-radius: 8;\n"
" background: #ffffff;\n"
" min-width: 20px;\n"
"}\n"
"QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {\n"
" border: none;\n"
" background: none;\n"
"}\n"
"QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical{\n"
" background: none;\n"
"}")
self.centralwidget.setObjectName("centralwidget")
self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
self.tableWidget.setGeometry(QtCore.QRect(0, 0, 440, 24))
self.tableWidget.setStyleSheet("")
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(0)
self.tableWidget.setRowCount(0)
self.tableWidget_2 = QtWidgets.QTableWidget(self.centralwidget)
self.tableWidget_2.setGeometry(QtCore.QRect(0, 24, 440, 426))
self.tableWidget_2.setObjectName("tableWidget_2")
self.tableWidget_2.setColumnCount(0)
self.tableWidget_2.setRowCount(0)
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
mas_column = ['1', '2', '3', '4', '5', '6']
self.tableWidget.setColumnCount(len(mas_column))
for i in range(len(mas_column)):
item = QtWidgets.QTableWidgetItem()
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(6)
font.setBold(True)
font.setWeight(75)
item.setFont(font)
item.setText(mas_column[i])
self.tableWidget.setHorizontalHeaderItem(i, item)
self.tableWidget.horizontalHeader().setDefaultSectionSize(440//len(mas_column))
self.tableWidget.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
self.tableWidget.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Fixed)
self.tableWidget.verticalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Fixed)
mas_row = ['1', '2', '3']
self.tableWidget_2.setColumnCount(len(mas_column) - 1)
self.tableWidget_2.setRowCount(len(mas_row))
self.tableWidget_2.horizontalHeader().setVisible(False)
for i in range(len(mas_row)):
item = QtWidgets.QTableWidgetItem()
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(6)
font.setBold(True)
font.setWeight(75)
item.setFont(font)
item.setText(mas_row[i])
self.tableWidget_2.setVerticalHeaderItem(i, item)
self.tableWidget_2.horizontalHeader().setDefaultSectionSize(440//len(mas_column))
self.tableWidget_2.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
self.tableWidget_2.verticalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Fixed)
n = 0
mas_cell = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15']
for j in range(len(mas_column) - 1):
for i in range(len(mas_row)):
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(6)
font.setBold(True)
font.setWeight(75)
item.setFont(font)
item.setText(mas_cell[n])
n += 1
self.tableWidget_2.setItem(i, j, item)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
Window1 = MainWindow()
Window1.show()
sys.exit(app.exec_())
我的stylesheet
:
QTableWidget {
selection-background-color: #ffffff;
selection-color: #000000;
gridline-color: #000000;
}
QHeaderView::section {
background-color: #cccccc;
border-style: none;
border-bottom: 1px solid #000000;
border-right: 1px solid #000000;
}
QTableWidget QTableCornerButton::section {
background-color: #cccccc;
border: 1px solid #000000;
}
QHeaderView::section:horizontal
{
border-top: 1px solid #000000;
}
QHeaderView::section:vertical
{
border-left: 1px solid #000000;
}
QTableWidget {
border: 0px solid ;
}
如果更容易呢?
一张表的示例代码(在我看来,不需要第二张)