下面是python的“PyQt5 – 当从中间状态按下时,为被按下的指示器设置背景图片|复选框”的完整使用攻略。
简介:
PyQt5是一个丰富多样的Python GUI库,允许使用者开发桌面应用程序。PyQt5提供了很多便捷的类和功能,其中包括QPushButton、QCheckBox、QGroupBox、QLabel、QLineEdit、QComboBox、QTableView、QMenuBar等等控件。本文将主要介绍如何为复选框添加背景图片,方法主要包含以下几个步骤:
1.创建复选框对象
2.设置复选框状态改变的槽函数
3.在槽函数中添加代码,根据复选框的状态来修改背景图片
4.在主程序中运行
示例1: 将背景图片嵌入复选框
在这个例子中,我们将使用QPixmap创建QCheckBox对象,并将图片设置为复选框的背景。起始状态为未选择状态,当复选框被选中或解除选中时,背景图片将随之改变。
import sys
from PyQt5 import QtWidgets, QtCore, QtGui
class Example(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
hbox = QtWidgets.QHBoxLayout()
pixmap = QtGui.QPixmap('unchecked.png')
self.cb1 = QtWidgets.QCheckBox('Check me')
self.cb1.setIcon(QtGui.QIcon(pixmap))
self.cb1.setIconSize(QtCore.QSize(30, 30))
self.cb1.stateChanged.connect(self.changeIcon)
hbox.addWidget(self.cb1)
self.setLayout(hbox)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('QCheckBox')
self.show()
def changeIcon(self, state):
if state == QtCore.Qt.Checked:
pixmap = QtGui.QPixmap('checked.png')
else:
pixmap = QtGui.QPixmap('unchecked.png')
self.cb1.setIcon(QtGui.QIcon(pixmap))
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
在此示例中,我们在initUI
函数中定义了水平布局窗口 hBoxLayout对象(QHBoxLayout()),然后使用QPixmap创建第一个复选框对象(cb1),该控件显示名称为 “Check me”。在创建cb1对象之后,调用setIcon()方法为其设置背景图片,并设置其大小为源图像大小的30×30像素(setIconSize())。
接下来,我们定义changeIcon
函数,该函数设置当满足QCheckBox的状态时的新背景图片。若当前的状态为选中(QtCore.Qt.Checked),则设置“checked.png”作为背景图片,否则设置“unchecked.png”作为背景图片。在这个函数中,我们使用cb1
对象的setIcon()方法来设置背景图片。
示例2: 将图片嵌入复选框并更改背景颜色
在这个示例中,我们将使用如下方式创建一个QGroupBox内的第一个QCheckBox对象。与第一个示例中的相似,使用QPixmap设置背景图片,并将其大小设置为50×50像素。该控件名为”Check”。在创建cb2对象之后,使用样式设置将其背景颜色定义为了灰色。
import sys
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, QHBoxLayout, QGroupBox, QCheckBox
from PyQt5.QtCore import Qt
class CheckBox(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
grp = QGroupBox('GroupBox')
hbox = QHBoxLayout()
pixmap = QPixmap('unchecked.png')
self.cb2 = QCheckBox('Check')
self.cb2.setIcon(QIcon(pixmap))
self.cb2.setIconSize(Qt.QSize(50, 50))
self.cb2.setStyleSheet('QCheckBox {background-color: gray; }')
hbox.addWidget(self.cb2)
grp.setLayout(hbox)
vbox = QVBoxLayout()
vbox.addWidget(grp)
self.setLayout(vbox)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('QGroupBox checkbox')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = CheckBox()
sys.exit(app.exec_())
在此示例中,我们创建了一个QGroupBox对象(该对象名为 “GroupBox”),为其创建属于 QHBoxLayout() 对象的 hbox 对象。接下来创建一个QPixmap对象,然后将第二个复选框(cb2)创建为QCheckBox对象,其背景图片将设置为创建的QPixmap对象。
为了更改cb2的背景色,我们在对象中以样式的方式使用setStyleSheet()方法。此样式将背景颜色定义为灰色。
最后,我们创建一个 QVBoxLayout()对象作为主布局并将GroupBox对象添加到其中。
在本文中,我们讨论了如何使用PyQt5为QCheckBox控件添加背景图片和更改背景颜色属性。在示例代码中,通过两种不同的方式使用了图片,并展示了如何通过状态变化而修改图像。