PyQt5组合框 在关闭状态和被按下时的不同边框颜色

Python中GUI库PyQt5提供了多个用户界面组件,其中包括组合框(QComboBox)组件。

在PyQt5中,QComboBox组件提供了多个信号(signal)和槽函数(slot)供使用者调用。其中,对于组合框在关闭状态和被按下时的不同边框颜色的需求,我们可以通过以下两个信号来实现:

  1. QLineEdit焦点获取事件:在组合框获得焦点时,设置样式表(stylesheet)中的边框颜色。

  2. QComboBox折叠事件:在组合框折叠并失去焦点时,将样式表中的边框颜色改为之前的颜色。

下面,我们提供两个使用示例:

示例1:更改边框颜色为红色,并在折叠时改回

import sys
from PyQt5.QtWidgets import QApplication, QComboBox, QLineEdit


class SimpleComboBox(QComboBox):
    def __init__(self):
        super().__init__()
        self.setStyleSheet('QComboBox{border:1px solid red;}')
        self.lineEdit().setStyleSheet('border:none;')
        self.lineEdit().installEventFilter(self)  # 安装事件过滤器
        self.installEventFilter(self)  # 安装事件过滤器

    def eventFilter(self, obj, event):
        if obj == self.lineEdit() and event.type() == 9:  # 判断LineEdit焦点获取事件
            self.setStyleSheet('QComboBox{border:1px solid blue;}')
        if obj == self and event.type() == 14:  # 判断QComboBox折叠事件
            self.setStyleSheet('QComboBox{border:1px solid red;}')
        return super(SimpleComboBox, self).eventFilter(obj, event)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    my_window = SimpleComboBox()

    my_window.addItem("1")
    my_window.addItem("2")
    my_window.addItem("3")

    my_window.show()
    sys.exit(app.exec_())

在这个示例中,我们创建了一个继承自QComboBox组件的SimpleComboBox组件。在初始化时,我们设置了QComboBox的样式表,将其边框颜色设置为红色,将lineEdit(即组合框下拉框内的编辑框)的边框样式设置为不显示,并将其事件过滤器设置为当前组件。

在事件过滤器中,如果焦点事件(focusInEvent)是来自于lineEdit,我们将QComboBox的样式表的边框颜色改为蓝色。如果折叠事件(hideEvent)是来自于QComboBox本身,我们将样式表中的边框颜色改回红色。

示例2:更改边框颜色为变色龙效果(渐变),在折叠时改回

import sys
from PyQt5.QtWidgets import QApplication, QComboBox


class SimpleComboBox(QComboBox):
    def __init__(self):
        super().__init__()
        self.setStyleSheet('background-color:white; border:none;border-bottom:1px solid #d0d0d0;')
        self.combobox_closed_style = 'background-color:white; border:none;border-bottom:1px solid #d0d0d0;'
        self.combobox_opened_style = 'background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop: 0.00 #6699FF, stop: 0.48 #00CCFF,' \
                                     'stop: 0.52 #00CCCC, stop:1.00 #66FFFF); border:none;border-bottom:1px solid #d0d0d0;'
        self.view().pressed.connect(self.dropdown_show)  # 折叠前显示下拉框
        self.view().hidden.connect(self.dropdown_hide)  # 折叠时收起下拉框

    def dropdown_show(self):
        self.setStyleSheet(self.combobox_opened_style)

    def dropdown_hide(self):
        self.setStyleSheet(self.combobox_closed_style)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    my_window = SimpleComboBox()

    my_window.addItem("1")
    my_window.addItem("2")
    my_window.addItem("3")

    my_window.show()
    sys.exit(app.exec_())

在这个示例中,我们创建了一个继承自QComboBox组件的SimpleComboBox组件。在初始化时,我们设置了QComboBox的样式表,将其边框样式设置为不显示,并设置下划线颜色为灰色。同时,我们设置了颜色渐变的样式表,并定义了组合框关闭和打开时的样式表。

我们通过连接两个信号槽函数,分别在按下下拉框之前的显示和折叠时的隐藏中,调用修改样式表的函数,实现了变色龙效果。在折叠时,我们将其设置为原来的样式表,保持默认的边框颜色(灰色)不变。

以上两个示例均使用了样式表 PyQt5 支持使用样式修改组件外观及其子元素样式,具体可以参考官方文档。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5组合框 在关闭状态和被按下时的不同边框颜色 - Python技术站

(0)
上一篇 2023年5月11日
下一篇 2023年5月11日

相关文章

  • PyQt5 QDateEdit – 获取可设置的最小时间

    下面是PyQt5 QDateEdit-获取可设置的最小时间的完整使用攻略。 简介 QDateEdit是PyQt5中的日期编辑器,可方便地选择和设置日期。PyQt5 QDateEdit控件提供了一些功能,可以设置日期,格式等等。本文将介绍如何获取可设置的最小时间。 获取可设置的最小时间 要获取QDateEdit中可设置的最小时间,我们可以使用QDateEdit…

    python 2023年5月12日
    00
  • PyQt5 QDockWidget – 获取样式表

    PyQt5是一个广受欢迎的Python GUI库,它提供了丰富的组件和功能。其中QDockWidget是一个非常有用的组件,它允许我们将窗口附加到主窗口的其它部分。在此基础上,我们需要了解如何获取样式表,以此来进一步定制美化我们的窗口。 获取QDockWidget样式表 获取QDockWidget样式表可以通过两种方式,一种是在Qt Designer中设置样…

    python 2023年5月12日
    00
  • PyQt5 – 获取组合框中所选项目的当前索引

    下面是针对 PyQT5 获取组合框中所选项目的当前索引的完整使用攻略。 步骤概述 导入 PyQt5 模块 创建 QComboBox 实例 添加选项 获取当前选中的选项的索引 示例 示例1:简单实现 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QComboBox class…

    python 2023年5月10日
    00
  • PyQt5 QSpinBox – 让文本划掉

    下面是针对Python中PyQt5控件中QSpinBox的“让文本划掉”的详细使用攻略: 1. 概述 QSpinBox是PyQt5中的一个控件,用于编辑包含整数值的文本,是PyQt5中常用的交互式控件之一,也是QAbstractSpinBox的子类。 在使用QSpinBox的过程中,我们有时需要使用让文本划掉的效果,比如在界面上标注出打折的价格,或者划掉过期…

    python 2023年5月12日
    00
  • PyQt5 QSpinBox – 如何分别获得X和Y坐标

    PyQt5 QSpinBox-如何分别获得X和Y坐标 简介 在PyQt5中使用QSpinBox控件时,有时需要知道该控件在其父控件中的X和Y坐标。这个功能可以通过spinBox的x()和y()方法来实现。 获取QSpinBox的X和Y坐标 下面是一个简单的示例,说明如何使用x()和y()方法来获取QSpinBox的X和Y坐标: from PyQt5.QtWi…

    python 2023年5月12日
    00
  • PyQt5 QListWidget – 设置水平滚动模式属性

    PyQt5 是 Python 语言的一种 GUI 编程解决方案,其中 QListWidget 是 QWidget 的子类,用于创建图像或文本列表视图。设置 QListWidget 的滚动模式属性可以控制列表的滚动方式,如横向、纵向等,下面将详细讲解如何设置水平滚动模式属性。 设置水平滚动模式属性 QListWidget 的水平滚动模式属性可以通过 setHo…

    python 2023年5月13日
    00
  • PyQt5 QDateEdit – 完成的信号

    “PyQt5 QDateEdit-完成的信号”是指在Qt中的日期编辑控件(QDateEdit)中输入完成时所触发的信号。在PyQt5中,可以通过以下步骤来使用该信号: 导入PyQt5中的日期编辑控件和信号模块 from PyQt5.QtWidgets import QDateEdit from PyQt5.QtCore import pyqtSignal 创…

    python 2023年5月12日
    00
  • PyQt5 – 当按下时为不可编辑的关闭状态组合框添加边框

    下面就来详细讲解如何利用PyQt5为不可编辑的关闭状态组合框添加边框。 1. 安装PyQt5模块 首先,需要确保你的电脑上已经安装了PyQt5模块。如果还没有安装的话,在终端或命令行中执行以下命令: pip install PyQt5 2. 导入必要的模块 接下来,在你的Python脚本中导入PyQt5和QtCore模块: from PyQt5 import…

    python 2023年5月10日
    00
合作推广
合作推广
分享本页
返回顶部