以下是详细讲解python的“PyQt5 - 未选中的复选框的背景颜色”的完整使用攻略。
1. 简介
PyQt5是一种用Python编写的GUI(图形用户界面)工具箱,它包含了一系列用于构建桌面UI的类和方法。复选框也是PyQt5支持的常用控件之一,本文主要介绍如何修改未选中的复选框的背景颜色。
2. 修改未选中的复选框的背景颜色
2.1 方法一:使用stylesheet
PyQt5中,可以使用stylesheet样式表来自定义控件的外观,因此可以使用stylesheet来修改复选框的背景颜色。具体步骤如下:
-
在Qt Designer中创建一个复选框控件,并命名为checkBox。
-
在代码中引入PyQt5模块并实例化 QApplication 和 QWidget。
import sys
from PyQt5.QtWidgets import QApplication, QWidget
app = QApplication(sys.argv)
widget = QWidget()
widget.show()
- 在代码中获取checkBox控件并设置stylesheet样式表。
checkBox_style = 'QCheckBox::indicator::unchecked {\
background-color: red;\
}'
checkBox = widget.findChild(QCheckBox, 'checkBox')
checkBox.setStyleSheet(checkBox_style)
- 运行程序,即可看到未选中的复选框的背景颜色已经变为了红色。
2.2 方法二:自定义QProxyStyle
PyQt5中,可以通过继承QProxyStyle类并重载drawPrimitive方法,自定义复选框控件的绘制方式,从而实现修改复选框未选中时的背景颜色。具体步骤如下:
- 创建一个继承自QProxyStyle的类,命名为CustomStyle。并重载drawPrimitive方法,实现自定义的绘制方式。
from PyQt5.QtWidgets import QStyle, QProxyStyle, QStyleOption, QCheckBox
from PyQt5.QtGui import QPalette, QPainter
from PyQt5.QtCore import Qt
class CustomStyle(QProxyStyle):
def drawPrimitive(self, element, option, painter, widget=None):
if element == QStyle.PE_IndicatorCheckBox and not option.state & QStyle.State_On:
palette = option.palette
QtGui.QBrush(QtGui.QColor(255, 0, 0, 255))
radius = 0.15 * min(option.rect.width(), option.rect.height())
path = QtGui.QPainterPath()
path.addRoundedRect(option.rect, radius, radius)
painter.fillPath(path, brush)
else:
super().drawPrimitive(element, option, painter, widget)
- 在代码中实例化自定义的CustomStyle类,并设置为应用程序的样式。
app.setStyle(CustomStyle())
- 创建复选框控件,并设置。
checkBox = QCheckBox('CheckBox', widget)
checkBox.setGeometry(10, 10, 150, 30)
- 运行程序,即可看到未选中的复选框的背景颜色已经变为了红色。
3. 示例如下
3.1 方法一实例
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox
app = QApplication(sys.argv)
widget = QWidget()
checkBox_style = 'QCheckBox::indicator::unchecked {\
background-color: red;\
}'
checkBox = QCheckBox('CheckBox', widget)
checkBox.setObjectName('checkBox')
checkBox.setStyleSheet(checkBox_style)
checkBox.setGeometry(10, 10, 150, 30)
widget.show()
sys.exit(app.exec_())
3.2 方法二实例
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox
from PyQt5.QtGui import QPalette, QPainter
from PyQt5.QtCore import Qt
class CustomStyle(QProxyStyle):
def drawPrimitive(self, element, option, painter, widget=None):
if element == QStyle.PE_IndicatorCheckBox and not option.state & QStyle.State_On:
palette = option.palette
brush = QtGui.QBrush(QtGui.QColor(255, 0, 0, 255))
radius = 0.15 * min(option.rect.width(), option.rect.height())
path = QtGui.QPainterPath()
path.addRoundedRect(option.rect, radius, radius)
painter.fillPath(path, brush)
else:
super().drawPrimitive(element, option, painter, widget)
app = QApplication(sys.argv)
app.setStyle(CustomStyle())
widget = QWidget()
widget.setGeometry(300, 300, 250, 150)
checkBox = QCheckBox('CheckBox', widget)
checkBox.setGeometry(10, 10, 150, 30)
widget.show()
sys.exit(app.exec_())
以上就是完整的使用攻略,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5 – 未选中的复选框的背景颜色 - Python技术站