PyQt5的PyQtGraph实践系列1:添加图形到PyQt5布局

栏目: C++ · 发布时间: 5年前

内容简介:在pyqtgraph中,我们可以直接简单快速地绘制一个基本的图形出来。比如下面这样:运行上述代码,我们可以直接得到一个股市收盘价折线图窗口,如下图所示:

文章目录

  • 1、使用PyQtGraph绘制折线图
  • 2、一个基础的PyQt5图形
  • 3、添加pyqtgraph图形到pyqt5小部件

1、使用PyQtGraph绘制折线图

在pyqtgraph中,我们可以直接简单快速地绘制一个基本的图形出来。比如下面这样:

import pyqtgraph as pg
import pandas as pd
import sys
 
# 读取数据
df = pd.read_csv("000001.csv",encoding='gb2312').sort_values("日期")
data = df['收盘价'].tolist()
 
pg.plot(data,title="A股收盘价历史走势|州的先生zmister.com")
if __name__ == '__main__':
    pg.QtGui.QApplication.exec_()
 

运行上述代码,我们可以直接得到一个股市收盘价折线图窗口,如下图所示:

PyQt5的PyQtGraph实践系列1:添加图形到PyQt5布局

这样的图形界面窗口虽然将绘制出了图形来,但是由于是单独的一个窗口,r然而在大多数情况下,我们都是想在PyQt5/PySide2中包含PyQtGraph所生成的图形,但是现在这样的窗口并不方便我们在PyQt5/PiSide2中集成和调用。为了在PyQt5的widget中进行集成,我们需要换一种方式进行调用和绘制。

2、一个基础的PyQt5图形

以下是一个很基础的PyQt5图形界面窗口的代码:

from PyQt5 import QtWidgets
import sys
 
# 主窗口类
class MainWidget(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("上证指数收盘价历史走势|州的先生zmister.com") # 设置窗口标题
        main_widget = QtWidgets.QWidget() # 实例化一个widget部件
        main_layout = QtWidgets.QGridLayout() # 实例化一个网格布局层
        main_widget.setLayout(main_layout) # 设置主widget部件的布局为网格布局
        self.setCentralWidget(main_widget) # 设置窗口默认部件为主widget
 
# 运行函数
def main():
    app = QtWidgets.QApplication(sys.argv)
    gui = MainWidget()
    gui.show()
    sys.exit(app.exec_())
 
 
if __name__ == '__main__':
    main()
 

在上面的代码中,我们创建了一个派生自QMainWindow类的主窗口,在里面设置的窗口标题、创建了一个空的小部件,并为小部件设置了网格布局。运行上述代码,我们会得到如下图所示的空白图形界面窗口:

PyQt5的PyQtGraph实践系列1:添加图形到PyQt5布局

大多数使用PyQt5创建的图形界面,都是有着这样的基础结构,可能布局不一样,可能小部件不一样,但是结构式一样的。下面,我们尝试将pyqtgraph的图形添加到PyQt5的窗口部件中。

3、添加pyqtgraph图形到pyqt5小部件

要将pyqtgraph的图形添加到pyqt5的部件中,我们首先要做的就是将pyqtgraph的绘图方式由window改为widget。在 《pyqtgraph数据可视化2:使用PyQtGraph绘制图形的6种方法》 中,州的先生介绍了pyqtgraph的6中绘图方法,其中的PlotWidget方法就是通过widget方法进行绘图的。

我们修改一下上一节中的代码,将pyqtgraph的绘图代码添加进去,如下图所示:

from PyQt5 import QtWidgets
import pyqtgraph as pg
import pandas as pd
import sys
 
# 读取数据
df = pd.read_csv("000001.csv",encoding='gb2312').sort_values("日期")
data = df['收盘价'].tolist()
 
# 主窗口类
class MainWidget(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("上证指数收盘价历史走势|州的先生zmister.com") # 设置窗口标题
        main_widget = QtWidgets.QWidget() # 实例化一个widget部件
        main_layout = QtWidgets.QGridLayout() # 实例化一个网格布局层
        main_widget.setLayout(main_layout) # 设置主widget部件的布局为网格布局
        pw = pg.PlotWidget() # 实例化一个绘图部件
        pw.plot(data, ) # 在绘图部件中绘制折线图
        main_layout.addWidget(pw) # 添加绘图部件到网格布局层
        self.setCentralWidget(main_widget) # 设置窗口默认部件为主widget
 
# 运行函数
def main():
    app = QtWidgets.QApplication(sys.argv)
    gui = MainWidget()
    gui.show()
    sys.exit(app.exec_())
 
 
if __name__ == '__main__':
    main()
 

在此,实例化了一个PlotWidget()类,然后将上证指数的历史数据通过其plot()进行折线绘制,最后将其添加到网格布局中,这样,我们的pyqtgraph图形就集成到了pyqt的窗口中。如下图所示:

PyQt5的PyQtGraph实践系列1:添加图形到PyQt5布局

4、最后

将pyqtgraph的图形添加到pyqt5窗口只是简单的一小步,之后我们还可以继续对图形进行各种美化和事件处理。后续我们会接着谈到。

本文所使用的数据【上证指数历史数据】后续会经常使用到,其已经上传至百度网盘,链接地址关注州的先生微信公众号(ID:zmister2016),回复关键词 0018 即可获取。


以上所述就是小编给大家介绍的《PyQt5的PyQtGraph实践系列1:添加图形到PyQt5布局》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算机常用算法

计算机常用算法

徐士良 / 第2版 (1995年11月1日) / 1995-11 / 25.0

《计算机常用算法(第2版)》由清华大学出版社出版。一起来看看 《计算机常用算法》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换