PyQt5 实时获取屏幕界面图像,python3使用matplotlib

  最近,帮一个同学的忙制作一个GUI程序。由于他使用到了Python的 matplotlib第三方库,用于显示波形,而使用Duilib内嵌这个界面存在较大的困难,需要加上python的支持,还要内嵌界面,而外界用户与之交互的按钮又涉及到了一定的麻烦,所以最终决定还是使用python来做这个GUI应用程序。

  由于之前有过C++Qt的基础,加上简单比较python的几个GUI库,最终决定采用PyQt5库。

  本程序采用了Python3进行编写,用了PyQt5、matplotlib、pandas等第三方库,其中有一个小功能是实现实时获取放大当前波形图。

  话不多说,首先需要安装第三方库的支持,由于使用pip安装像matplotlib库之类的会比较麻烦,安装后将发现使用的时候会报错,网上也找了很多办法,但大部分都是比较麻烦的,哈哈,博主比较nan,就直接装了anaconda3,里面包含了大部分需要使用到的,具体可以百度这个软件,下载安装,安装后大概会占用1个g的内容。

  对于PyQt5,就可以简单地使用pip install PyQt5命令直接安装啦!

  安装完后,开始入正题,编写程序:

  首先编写matplotlib相关的基础父类

class BaseOscillograph(FigureCanvas):
    # 定义信号
    PosChangeSignal = QtCore.pyqtSignal(int,int)
    WheelChangSignal = QtCore.pyqtSignal(int)
    def __init__(self, parent=None, width=5, height=4, dpi=100):

        self.WheelValue = 0 #Wheel Default Value

        #Matble实现
        fig = Figure(figsize=(width, height), dpi=dpi)
        self.axes = fig.add_subplot(111)
        self.axes.hold(False) 
        FigureCanvas.__init__(self, fig)
        self.setParent(parent) # 设置父窗口,添加入窗口容器
        FigureCanvas.setSizePolicy(self,QSizePolicy.Expanding,QSizePolicy.Expanding)
        FigureCanvas.updateGeometry(self)

        # 改变样式
        self.pixmap = QPixmap("./img/border.png")
        self.scaledPixmap = self.pixmap.scaled(QSize(100, 100), Qt.KeepAspectRatio)  # 定义大小 按比例缩放图片
        newCursor = QCursor(self.scaledPixmap, -1, -1)
        self.setCursor(newCursor)

    def wheelEvent(self, event):
        delta = event.angleDelta()
        oriention = delta.y() / 8
    
        if oriention > 0:
            self.WheelValue -=10
        else:
            self.WheelValue +=10
        #Fix Value
        if self.WheelValue > 100:
            self.WheelValue =100
        if self.WheelValue <-40:
            self.WheelValue = -40
        self.scaledPixmap = self.pixmap.scaled(QSize(120+self.WheelValue, 120+self.WheelValue), Qt.KeepAspectRatio)
        newCursor = QCursor(self.scaledPixmap, -1, -1)
        self.setCursor(newCursor)

        self.WheelChangSignal.emit(
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值