【发布时间】:2019-11-10 18:37:55
【问题描述】:
我有一个被禁用的复选框(用户应该无法切换它),但我在选择它时无法更改它的背景。我确信这与盒子被禁用的事实有关,但我不知道如何修复它。如果有一个简单的样式表修复将是理想的。
我尝试弄乱插槽/信号,但这会导致奇怪的问题,我不想那样解决这个问题
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import (QApplication,
QTableView, QAbstractItemView)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(400, 300)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
MainWindow.setCentralWidget(self.centralwidget)
self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
self.tableWidget.setGeometry(QtCore.QRect(50, 40, 310, 50))
self.tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)
self.tableWidget.setSelectionMode(QAbstractItemView.
SingleSelection)
self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.tableWidget.verticalHeader().setVisible(False)
self.tableWidget.horizontalHeader().setVisible(False)
self.tableWidget.setShowGrid(False)
self.tableWidget.setStyleSheet("background-color: white; selection-background-color: #353535;")
self.tableWidget.insertRow(0)
self.tableWidget.insertColumn(0)
self.tableWidget.insertColumn(1)
self.tableWidget.insertColumn(2)
self.tableWidget.checkBox = QtWidgets.QCheckBox(self.tableWidget)
self.tableWidget.checkBox.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents)
self.tableWidget.checkBox.setFocusPolicy(QtCore.Qt.NoFocus)
self.tableWidget.checkBox.setMaximumSize(30, 30)
self.tableWidget.checkBox.setStyleSheet("background-color: white; selection-background-color: #353535; padding-left: 10px")
self.tableWidget.checkBox.setChecked(True)
self.tableWidget.setCellWidget(0, 1, self.tableWidget.checkBox)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
【问题讨论】:
-
我不懂你,你自己解释清楚
-
如果您运行当前代码并选择该行,您会看到整行将背景颜色更改为灰色,但复选框周围的区域不会更改背景颜色,它仍然是白色。我想修改它,以便在选择行时,整个复选框后台区域变为灰色。 span>
-
为什么禁用 QCheckBox 的焦点?
-
因为我不希望用户能够用它做任何事情。在实际项目中,根据用户权限检查复选框
标签: python pyqt pyqt5 qtablewidget