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自定义控件:旋转圆控件

欢迎加关注,共同交流。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181010A0O4YB00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券