PyQt5 – 设置复选框被按下时的背景颜色

  • Post category:Python

下面是关于设置PyQt5复选框被按下时的背景颜色的完整使用攻略。

步骤一:导入PyQt5模块

使用PyQt5的GUI编程,需要先导入模块。具体地,在Python代码中写入以下语句:

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

步骤二:创建一个复选框

要创建一个复选框,需要使用QCheckBox类。具体地,在Python代码中写入以下语句:

checkbox = QCheckBox('复选框', self)

这个语句创建了一个名为“复选框”的复选框,并将其放置在self窗口中。

步骤三:定义复选框被按下时的响应函数

为了在复选框被按下时更改其背景颜色,需要定义一个响应函数。具体地,在Python代码中写入以下语句:

def onCheckboxChecked(self, checked):
    if checked:
        self.setStyleSheet("background-color: red")
    else:
        self.setStyleSheet("")

在上述代码中,响应函数名为“onCheckboxChecked”,包含两个参数self和checked。当复选框被按下时,该函数会检查复选框的状态。如果被选中,背景颜色会更改为红色;否则,背景颜色会重置为默认颜色。

步骤四:连接复选框的信号和响应函数

要连接复选框和响应函数,需要使用connect()函数。具体地,在Python代码中写入以下语句:

checkbox.stateChanged.connect(self.onCheckboxChecked)

这个语句连接了checkbox的stateChanged信号和onCheckboxChecked函数。每当复选框的状态发生变化时,onCheckboxChecked函数将被调用。

示例一:简单的复选框

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        checkbox = QCheckBox('复选框', self)
        checkbox.setGeometry(50, 50, 100, 30)

        checkbox.stateChanged.connect(self.onCheckboxChecked)

    def onCheckboxChecked(self, checked):
        if checked:
            self.setStyleSheet("background-color: red")
        else:
            self.setStyleSheet("")

if __name__ == '__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()

这个示例创建了一个名为“复选框”的复选框,并在其上方设置了一个默认背景颜色。当复选框被选中时,背景颜色变为红色。

示例二:同时创建多个复选框

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        checkbox1 = QCheckBox('复选框1', self)
        checkbox1.setGeometry(50, 50, 100, 30)
        checkbox1.stateChanged.connect(self.onCheckboxChecked)

        checkbox2 = QCheckBox('复选框2', self)
        checkbox2.setGeometry(50, 100, 100, 30)
        checkbox2.stateChanged.connect(self.onCheckboxChecked)

    def onCheckboxChecked(self, checked):
        if checked:
            self.setStyleSheet("background-color: red")
        else:
            self.setStyleSheet("")

if __name__ == '__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()

这个示例创建了两个复选框,它们位于不同的位置。当任何复选框被选中时,所有复选框的背景颜色将变为红色。