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

Python是一种面向对象的高级动态编程语言,相对于其它如C/C++语言,具有上手快、代码量少、开发效率高等特点,Qt是跨平台的C++图形用户界面应用程序开发框架,是当前主流的GUI开发工具之一,其在Python下的绑定是PyQt库。使用“Python+PyQt”架构编写应用软件,可以做到在兼顾软件运行效率的前提下,也可以大大节省开发者的时间成本。

关于自绘控件或自定义控件的编程方法,目前能找到的资料大多是C++语言下Qt的例子,而直接使用PyQt实现的资料很少,这儿给出一个在Python语言中使用PyQt库自定义不停旋转的圆控件的例子。

控件例子说明

代码实现后的控件运行界面如下图所示:

8c1001e93901213fdb6e76aa59e736d12f2e9562.jpg

上图中显示了一个不停旋转的圆,圆内部是蓝白颜色交叉显示的四部分扇形区域,外圈为灰色的圆形带。

代码实现过程

在代码实现中,继承于PyQt的QWidget基类,定义了一个旋转的圆控件类----RotateCircleWidget,在该类中重定义paintEvent事件函数,在该函数内部实现圆控件的外观显示。调用定时器函数实现其不停旋转功能。下面逐步说明主要的代码实现方法。

1、类的初始化

初始化每次旋转的角度变量,定义定时器,绑定超时函数及启动定时器,设置每隔50ms旋转一次,代码如下图所示:

u=1619257130,1467794935&fm=173&app=25&f=JPEG?w=576&h=179&s=B284B14893F0BD7014C58C02020070C0

2、重定义paintEvent事件

这是自绘旋转圆控件中代码主要实现的地方,定义了控件在不同情况下的外观,这儿请参考注释,不作详细说明了,主要代码如下图所示:

u=3913442204,215703456&fm=173&app=25&f=JPEG?w=639&h=424&s=B29431C05AACB44F1ED8D0030200E0C0

3、定时器超时事件

在定时器的超时事件中,每次旋转的角度变量自加2,调用update()函数实现控件外观的不停刷新,达到旋转的效果。主要代码如下图所示:

u=2779576468,3443938369&fm=173&app=25&f=JPEG?w=568&h=58

控件测试例子

调用上面的控件类,将其放到主窗口中,即可看到本文开头不停旋转的圆运行界面。主要实现代码如下图所示:

u=1467840619,905303276&fm=173&app=25&f=JPEG?w=476&h=401&s=BA85B148DAAEB44F06D51C0B0200F0C0

备注

PyQt中大部分函数同C++平台下Qt的函数完全一样,只是在Python和C++下语法有所不同,如变量的定义、赋值等,使用Python+PyQt框架,实现同样的功能,代码量要远远小于C++平台下的代码量,如本例加上注释、空行等才不足80行代码,大大节约了编程时间。

可参考视频演示:python+pyqt自定义控件:旋转圆控件

欢迎加关注,共同交流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyQt5是一个用于Python的GUI,可以用于创建丰富的图形界面应用程序。在PyQt5中,我们可以通过美化窗体和控件来增加应用程序的吸引力和可用性。下面是一个使用PyQt5实现异形窗体的示例。 首先,我们需要导入PyQt5和其他必要的模块: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow from PyQt5.QtCore import Qt from PyQt5.QtGui import QPainter, QRegion, QColor ``` 然后,我们创建一个自定义的主窗口类,并在其构造函数中设置窗口的样式为无标题栏窗口: ```python class MyWindow(QMainWindow): def __init__(self): super().__init__() # 设置窗口为无标题栏窗口 self.setWindowFlags(Qt.FramelessWindowHint) ``` 接下来,我们重写主窗口类的paintEvent方法,并在该方法中使用QPainter绘制窗口的形状: ```python def paintEvent(self, event): painter = QPainter(self) painter.setCompositionMode(QPainter.CompositionMode_Clear) painter.fillRect(event.rect(), QColor(0, 0, 0, 0)) painter.setCompositionMode(QPainter.CompositionMode_SourceOver) painter.setBrush(Qt.black) painter.drawRoundedRect(0, 0, self.width(), self.height(), 15, 15) ``` 在此示例中,我们使用了QPainter来绘制了一个带有角的黑色矩形,以实现异形窗体的效果。 最后,我们创建一个QApplication对象,并在其exec_方法中实例化我们自定义的主窗口类: ```python if __name__ == "__main__": app = QApplication(sys.argv) window = MyWindow() window.show() sys.exit(app.exec_()) ``` 通过运行以上代码,我们就可以看到一个带有异形窗体的窗口实例。 使用PyQt5的美化窗体和控件功能,我们可以实现更加吸引人和独特的图形界面效果,提升应用程序的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值