爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 22720|回复: 9

[源代码] 基于pyQt5的界面动态绘图(提供实时动态风画图)

[复制链接]

新浪微博达人勋

发表于 2021-2-1 13:10:10 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 jl2587t 于 2021-2-1 17:02 编辑

基于pyQt5的界面动态绘图(提供实时动态风画图)
本文提供了一个基于pyqt5的界面绘图,主要原理就是设计一个类,继承于QWidget控件,然后重写绘图事件paintEvent,在其内部实现重新绘图,利用update()函数动态更新,文章最后提供了一个动态显示风向风速的案例。
画图类

下面作者给出了这个类

class PaintArea(QWidget):

    def __init__(self,parent = None, *args, **kwargs):

        super().__init__(parent, *args, **kwargs)

        self.setPalette(QPalette(QColor(240,240,240)))#设置背景颜色

        self.setAutoFillBackground(True)#设置窗口自动填充背景

    def paintEvent(self, event):#重写事件

        self.resize(self.width(),self.width())

        self.painter = QPainter()#创建绘图类

        self.painter.begin(self)#开始

        #在这里画图

        self.painter.end()#结束


基于pyQt5的界面绘图

下面是一个基于pyqt5的画图实践,作者画了一个边缘为黑色,内部填充蓝色的圆

from PyQt5.Qt import *


class PaintArea(QWidget):

    def __init__(self,parent = None, *args, **kwargs):

        super().__init__(parent, *args, **kwargs)

        self.setPalette(QPalette(QColor(240,240,240)))#设置背景颜色

        self.setAutoFillBackground(True)#设置窗口自动填充背景

    def paintEvent(self, event):#重写事件

        self.resize(self.width(),self.width())

        self.rect_base = QRect(20,20,self.width()-40,self.width()-40)

        self.painter = QPainter()#创建绘图类

        self.painter.begin(self)#开始


        self.painter.setBrush(QColor(100,100,255))#设置画刷用于填充

        self.painter.setPen(QPen(QColor(0,0,0),10,Qt.SolidLine))#设置画笔,画边缘

        self.painter.drawEllipse(self.rect_base)#画园         

        self.painter.end()#结束


class Window(QWidget):

    def __init__(self):

        super().__init__()

        self.setWindowTitle("pyqt5画图类")

        self.resize(500,500)

        self.setup_ui()


    def setup_ui(self):

        #子控件加这里

        self.area = PaintArea(self)#添加画图控件

        self.area.resize(300,300)#设置大小

        self.area.move(100,100)#设置位置

if __name__ == "__main__":

    import sys

    app = QApplication(sys.argv)

    window = Window()

    window.show()

    sys.exit(app.exec_())

1.png

拓展实践(实时动态风)

利用update()函数,实现动态绘制风向风速,为了方便动态布局,里面的所有长度信息均是动态的,随绘图尺寸改变而改变。

2.png


CSDN有更详细的解释       没权利发网址,见谅htps://blog.csdn.net/weixin_42372313/article/details/113509097

pyqt5画实时风.py

5.74 KB, 下载次数: 11, 下载积分: 金钱 -5

评分

参与人数 1金钱 +10 收起 理由
Rainch + 10 很给力!

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2021-2-1 13:13:30 | 显示全部楼层
楼主镇楼
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2021-2-1 15:33:10 | 显示全部楼层
看过机场的观测资料展示软件,看起来和这个很像。
比较直观。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-2-1 16:36:27 | 显示全部楼层
niubility
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-2-1 17:01:00 | 显示全部楼层
解脱 发表于 2021-2-1 15:33
看过机场的观测资料展示软件,看起来和这个很像。
比较直观。

是的,htps://blog.csdn.net/weixin_42372313/article/details/113509097   CSDN论坛有更详细的解释
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-2-1 17:03:15 | 显示全部楼层

CSDN有更详细的解释       没权利发网址,见谅htps://blog.csdn.net/weixin_42372313/article/details/113509097
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-2-2 10:44:06 | 显示全部楼层
我画过时钟,和update绑定在一起,每次执行的时候就重新填充一副图
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-2-2 20:43:01 | 显示全部楼层
QCD 发表于 2021-2-2 10:44
我画过时钟,和update绑定在一起,每次执行的时候就重新填充一副图

你的意思是你画时钟,然后每走一秒,上一秒还留着,然后画花了,是吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-2-4 15:36:05 | 显示全部楼层
jl2587t 发表于 2021-2-2 20:43
你的意思是你画时钟,然后每走一秒,上一秒还留着,然后画花了,是吗?

不是,正常显示的
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-2-4 20:05:12 | 显示全部楼层
QCD 发表于 2021-2-4 15:36
不是,正常显示的

哦,那用起来没毛病就行了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表