使用PYQT5画带标签的、可随窗口放大缩小的折线图

  • Post author:
  • Post category:其他


import sys
import random

import pyqtgraph as pg
from PyQt5.QtCore import QRect, QMetaObject, QCoreApplication
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QLabel, QMenuBar, QStatusBar, QApplication, QMainWindow
from pyqt5_plugins.examplebutton import QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.horizontalLayout = QHBoxLayout(self.centralwidget)
        self.horizontalLayout.setObjectName(u"horizontalLayout")
        self.label = QLabel(self.centralwidget)
        self.label.setObjectName(u"label")

        self.horizontalLayout.addWidget(self.label)

        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(MainWindow)
        self.menubar.setObjectName(u"menubar")
        self.menubar.setGeometry(QRect(0, 0, 800, 22))
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QStatusBar(MainWindow)
        self.statusbar.setObjectName(u"statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)

        QMetaObject.connectSlotsByName(MainWindow)
        #####
        main_layout = QtWidgets.QGridLayout()  # 实例化一个网格布局层
        self.label.setLayout(main_layout)  # 设置主widget部件的布局为网格布局
        self.plot = pg.PlotWidget()  # 实例化一个绘图部件
        self.plot.showGrid(x=True, y=True)  # 显示图形网格
        main_layout.addWidget(self.plot)
        #加标签
        self.plot.addLegend((0, 1))#0,0;0,1;1,0;1,1分别代表四角
        #
        self.plot.plot([1,2,3], [4,5,6], connect='finite', pen=pg.mkPen(
            {'color': (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)), 'width': 2}),
                       name='ch1')  # 在绘图部件中绘制折线
        self.plot.plot([4,5,6], [1,2,3], connect='finite', pen=pg.mkPen(
            {'color': (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)), 'width': 2}),
                       name='ch2')  # 在绘图部件中绘制折线
        #####
    # setupUi

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
        self.label.setText(QCoreApplication.translate("MainWindow", u"TextLabel", None))
    # retranslateUi

class MyWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setupUi(self)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWindow = MyWindow()
    mainWindow.show()
    sys.exit(app.exec_())



版权声明:本文为weixin_45138264原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。