Python使用PyQt界面库绘制不停旋转的圆控件

python是一种面向对象的高级动态编程语言,相对于其它如c/c++语言,具有上手快、代码量少、开发效率高等特点,qt是跨平台的c++图形用户界面应用程序开发框架,是当前主流的gui开发工具之一,其在python下的绑定是pyqt库。使用“python+pyqt”架构编写应用软件,可以做到在兼顾软件运行效率的前提下,也可以大大节省开发者的时间成本。
关于自绘控件或自定义控件的编程方法,目前能找到的资料大多是c++语言下qt的例子,而直接使用pyqt实现的资料很少,这儿给出一个在python语言中使用pyqt库自定义不停旋转的圆控件的例子。
控件例子说明
代码实现后的控件运行界面如下图所示:
上图中显示了一个不停旋转的圆,圆内部是蓝白颜色交叉显示的四部分扇形区域,外圈为灰色的圆形带。
代码实现过程
在代码实现中,继承于pyqt的qwidget基类,定义了一个旋转的圆控件类----rotatecirclewidget,在该类中重定义paintevent事件函数,在该函数内部实现圆控件的外观显示。调用定时器函数实现其不停旋转功能。下面逐步说明主要的代码实现方法。
1、类的初始化
初始化每次旋转的角度变量,定义定时器,绑定超时函数及启动定时器,设置每隔50ms旋转一次,代码如下图所示:
2、重定义paintevent事件
这是自绘旋转圆控件中代码主要实现的地方,定义了控件在不同情况下的外观,这儿请参考注释,不作详细说明了,主要代码如下图所示:
3、定时器超时事件
在定时器的超时事件中,每次旋转的角度变量自加2,调用update()函数实现控件外观的不停刷新,达到旋转的效果。主要代码如下图所示:
控件测试例子
调用上面的控件类,将其放到主窗口中,即可看到本文开头不停旋转的圆运行界面。主要实现代码如下图所示:
备注
pyqt中大部分函数同c++平台下qt的函数完全一样,只是在python和c++下语法有所不同,如变量的定义、赋值等,使用python+pyqt框架,实现同样的功能,代码量要远远小于c++平台下的代码量,如本例加上注释、空行等才不足80行代码,大大节约了编程时间。
可参考视频演示:python+pyqt自定义控件:旋转圆控件
欢迎加关注,共同交流。