📜  PyQt5 QColorDialog – 为其子旋转框设置背景颜色(1)

📅  最后修改于: 2023-12-03 15:18:48.362000             🧑  作者: Mango

PyQt5 QColorDialog - 为其子旋转框设置背景颜色

在 PyQt5 中,可以使用 QColorDialog 来选择颜色。通过设置子窗口(QSpinBox 或 QTimeEdit 等)的背景颜色,我们可以让用户更好地与窗口交互。

以下是如何使用 QColorDialog 为其子旋转框设置背景颜色的步骤:

  1. 导入所需的 PyQt5 模块和相关类。
  2. 创建一个 QWidget 类的子类。
  3. 设置子窗口旋转框。
  4. 创建一个按钮,并关联一个函数以弹出 QColorDialog。
  5. 实现函数,以更新子窗口旋转框的背景颜色。

下面是完整的代码实现:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QSpinBox, QPushButton, QColorDialog


class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        # 创建一个 QSpinBox 对象
        spinbox = QSpinBox(self)
        spinbox.setRange(0, 100)

        # 创建一个按钮,点击后弹出 QColorDialog
        button = QPushButton('更改背景颜色', self)
        button.move(0, 50)
        button.clicked.connect(self.showColorDialog)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('设置子窗口背景颜色')
        self.show()

    def showColorDialog(self):

        # 调用 QColorDialog
        color = QColorDialog.getColor()

        if color.isValid():
            # 如果选中的颜色有效,则设置子窗口背景颜色
            self.sender().parent().children()[0].setStyleSheet('background-color: %s' % color.name())

if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

在上面的代码中,我们创建了一个名为 Example 的 QWidget 子类。我们首先创建了一个 QSpinBox 对象,然后创建了一个按钮,点击后弹出 QColorDialog。接下来,我们在 showColorDialog 函数中获取选择的颜色,如果颜色是有效的,则更新子窗口旋转框的背景颜色。

因为我们没有直接命名 QSpinBox 对象,而是使用了 self.sender().parent().children()[0],这个部分会从按钮的父级部件中获取子级部件(QSpinBox),并为其设置背景颜色。

在运行该程序时,您将看到一个子窗口旋转框和一个更改背景颜色的按钮。只要单击按钮,就会弹出 QColorDialog,并选择新的颜色。所选颜色将更新子窗口旋转框的背景色。

该代码演示了如何使用 QColorDialog 为其子旋转框设置背景颜色。您可以将这个示例修改并应用到您自己的 PyQt5 项目中,来更好地与用户交互。