PyQt5 QSpinBox – 当它被按下时添加背景色

  • Post category:Python

PyQt5是Python语言的一个GUI工具包,其中QSpinBox是一个用于输入数字的小部件,支持通过代码设置其样式和样式表。

如果要在QSpinBox被按下时添加背景色,可以通过绑定信号槽的方式,在QSpinBox的”pressed”信号发射时调用设置背景色的代码。

以下是完整的使用攻略:

1. 导入PyQt5的QSpinBox和QtGui模块

使用QSpinBox和QtGui模块需要先导入,代码如下:

from PyQt5.QtWidgets import QSpinBox
from PyQt5.QtGui import QColor

2. 创建QSpinBox对象并添加到窗口中

在创建QSpinBox对象时,可以通过设置其最小值、最大值和初始值等属性进行初始化。例如:

spinbox = QSpinBox()
spinbox.setMinimum(0)
spinbox.setMaximum(100)
spinbox.setValue(50)

然后,需要将QSpinBox对象添加到窗口中,例如:

from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QVBoxLayout

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

        widget = QWidget()
        layout = QVBoxLayout()
        layout.addWidget(spinbox)
        widget.setLayout(layout)
        self.setCentralWidget(widget)

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

3. 绑定”pressed”信号槽并设置背景色

在QSpinBox被按下时,会发射”pressed”信号,此时可以通过绑定”pressed”信号槽,在信号槽函数中设置背景色。例如:

def on_spinbox_pressed():
    spinbox.setStyleSheet('background-color: yellow')

spinbox.pressed.connect(on_spinbox_pressed)

或者,可以使用lambda表达式在连接信号槽时直接指定信号发射时要调用的代码。例如:

spinbox.pressed.connect(lambda: spinbox.setStyleSheet('background-color: yellow'))

这样,当QSpinBox被按下时,它的背景色就会变成黄色。

下面是完整的示例代码:

from PyQt5.QtWidgets import QSpinBox, QMainWindow, QApplication, QWidget, QVBoxLayout
from PyQt5.QtGui import QColor

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

        spinbox = QSpinBox()
        spinbox.setMinimum(0)
        spinbox.setMaximum(100)
        spinbox.setValue(50)

        widget = QWidget()
        layout = QVBoxLayout()
        layout.addWidget(spinbox)
        widget.setLayout(layout)
        self.setCentralWidget(widget)

        spinbox.pressed.connect(lambda: spinbox.setStyleSheet('background-color: yellow'))

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

在该示例中,创建了一个QSpinBox对象,并将其添加到窗口中。然后,通过连接QSpinBox的”pressed”信号和lambda表达式,当QSpinBox被按下时,其背景色会变成黄色。