您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 黔西南分类信息网,免费分类信息发布

Python语言使用PyQt界面库自定义圆形指示灯控件的方法

2024/2/3 18:40:17发布15次查看
背景
pyqt是qt界面库在python下的绑定库,为熟悉或喜欢qt的开发者在python语言下编写gui界面程序提供了极大的便利,关于自定义控件前面已经给出了两个例子,分别是自定义颜色指示框控件和自定义导航栏控件,这次给出一个在python语言中使用pyqt库自定义圆形指示灯控件的例子。
自定义圆形指示灯控件例子说明
先看一下调用该圆形指示灯控件时运行界面的样子,如下图所示:
上图中,左侧部分包括了:设置圆形指示灯控件的各种属性,如设置颜色、半径等信息;恢复默认属性设置;启动/暂停跑马灯效果等。右侧上半部分是自定义的单个圆形指示灯控件,右侧下半部分使用了八个指示灯控件,用以模拟跑马灯的效果。该圆形指示灯控件具有如下特点:
自适应窗口大小;可单独对各种属性如颜色、半径等进行设置;对每个属性提供了默认值
代码实现过程
根据上面的特点,在pyqt中实现了一个基于qabstractbutton的圆形指示灯控件类——myled,下面逐步说明主要的代码实现方法。
1、类初始化代码
这部分主要设置圆形指示灯控件属性的初始值,设置最小大小尺寸等,主要代码如下图所示:
这儿在类中定义了一个“_attributes”字典变量(可理解为私有变量),里面存储了该控件的所有属性及初始值,使用字典的update()函数,将其更新到self.attributes成员变量中,这样做的好处是可以随时使用update()函数将控件的属性恢复到默认设置。
2、类方法(成员函数)代码
主要包括两个函数,“setleddefaultoption”和“setledoption”,前者将所有属性设置为默认值,后者设置单个属性值,主要代码如下图所示:
需要说明的是,对控件属性进行修改后,要及时调用update()函数,以强制使控件进行外观刷新。
3、重定义paintevent事件
这是实现圆形指示灯控件外观的主要代码,定义了控件在不同状态(真、假状态)、不同属性值下的外观,主要代码如下图所示:
这段代码中有详细的注释,主要包括画边框外圈、边框内圈及画内圆等操作,为呈现立体感,简单的使用了辐射渐变画刷qradialgradient类。
备注
调用上面的圆形指示灯控件类,将其放到主窗口中,即可看到本文开头的运行界面。测试代码例子较长,难度不大,调用该类的成员函数,可在界面上对各个属性值分别进行设置,大家可自行实现。
在模拟真实指示灯外观方面,本例只是粗略的使用了辐射渐变画刷,大家可以在paintevent事件中修改相关代码,实现更真实的外观。另外,在这个例子的基础上也可进一步改进,如实现方形指示灯或其它形状外观的指示灯控件。
欢迎加关注,共同交流。
黔西南分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录