Python语言编程系列007——PyQt自定义控件之颜色框

问题提出

在软件GUI界面设计中,经常需要使用颜色选择及指示的控件。在PyQt中,定义如下形式的控件,要求:

(1)控件的外观显示当前选中的颜色

(2)单击该控件能弹出颜色选择框选择新的颜色

(3)在弹出的颜色选择框中显示的初始颜色是控件上次的颜色

下图演示了该自定义控件的典型使用界面,在该图中使用了6个颜色控件来设置软件中其它控件的颜色属性值:

解决方法

实现上图所示自定义颜色指示选择框控件,主要需要考虑以下几个方面:

(1)自定义控件的基类为QFrame且风格设为:QFrame.Panel | QFrame.Sunken

(2)自定义控件的自动填充背景属性设为真

(3)更改自定义控件的外观颜色使用函数:setPalette(color)

(4)重写鼠标单击事件函数mousePressEvent,在该事件中处理新颜色的选择及通知主程序颜色已经改变了。

其中,在第4条中,弹出颜色选择框,使用QColorDialog类的getColor函数选择新的颜色,在该函数中初始颜色值设为上次控件的颜色值,即self.palette().color(QPalette.Window),通过自定义信号sigColorChanged(定义为pyqtSignal(QColor))将新颜色值发送到调用该控件的主程序。

实现代码

结合上面的思路,Python中该自定义控件的类实现代码如下图所示:

在主程序中,调用上面的类即可实现一个自定义的颜色指示选择框控件。

欢迎加关注,共同交流。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180907A0O0G400?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券