转载自百家号作者:编码那些事
python是一种面向对象的高级动态编程语言,相对于其它如c/c++语言,具有上手快、代码量少、开发效率高等特点,qt是跨平台的c++图形用户界面应用程序开发框架,是当前主流的gui开发工具之一,其在python下的绑定是pyqt库。使用“python+pyqt”架构编写应用软件,可以做到在兼顾软件运行效率的前提下,也可以大大节省开发者的时间成本。
在上篇文章中给出了一个在python语言中使用pyqt库自定义不停旋转的圆控件的例子,这次在这个例子的基础上进行修改,达到另外的旋转外观效果。
参考上篇文章:python使用pyqt界面库绘制不停旋转的圆控件
控件例子说明
代码实现后的控件运行界面如下图所示:
与上例不同的是,在不停旋转的圆中,最外圈是蓝绿相间的环形带,最内圈是灰绿色的背景圆圈。
代码实现过程
在代码实现中,除了重定义的paintevent事件与上例不同外,其余的地方完全相同。paintevent事件代码如下图所示:
与上例不同的地方在于:
1. 第37-40行,画整个圆的颜色时,修改颜色为灰绿色qcolor(50, 80, 80),实际上在最终显示效果中呈现的是内圆的颜色
2. 第44行,定义每个扇形的旋转跨度变量spanangle为90时,不需要乘以16,原因是这儿画扇形时使用的函数是qpainterpath类的arcto函数,这是与上例使用qpainter类的drawpie函数的区别所在
3. 第46-55行,在画4个扇形区域时,其原理是,定义了两个路径path和subpath,分别在上面画扇形区域和中间内圆形区域,两个区域的差就是最后呈现的效果,最外圈是蓝绿相间的环形带,最内圈是灰绿色的背景圆圈图,其中第52行,定义内圆的所在的矩形区域时,使用了qrect类的adjusted函数,其目的是对pierect矩形的大小进行调整,以裁减掉中间的内圆区域
备注
在pyqt中,通过自定义paintevent事件,灵活使用pyqt中qpainterpath类和qpainter类的相关函数,可以绘制出各种各样的不同外观效果的控件。
欢迎加关注,共同交流。