首页 > 其他分享 >在QTdesigner界面中使用按钮切换pyqtgraph画图

在QTdesigner界面中使用按钮切换pyqtgraph画图

时间:2022-10-10 10:23:30浏览次数:74  
标签:__ self pyqtgraph 画图 item ui formLayout QTdesigner MainWindow

在Qt Designer中先建立UI,转成py文件,文件名为:plot_ui.py

# -*- coding: utf-8 -*-

################################################################################
## Form generated from reading UI file 'designerfVqEfi.ui'
##
## Created by: Qt User Interface Compiler version 6.3.0
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################

from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
    QMetaObject, QObject, QPoint, QRect,
    QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
    QFont, QFontDatabase, QGradient, QIcon,
    QImage, QKeySequence, QLinearGradient, QPainter,
    QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QFormLayout, QMainWindow, QMenuBar,
    QPushButton, QSizePolicy, QStatusBar, QWidget)

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.formLayoutWidget = QWidget(self.centralwidget)
        self.formLayoutWidget.setObjectName(u"formLayoutWidget")
        self.formLayoutWidget.setGeometry(QRect(50, 30, 381, 201))
        self.formLayout = QFormLayout(self.formLayoutWidget)
        self.formLayout.setObjectName(u"formLayout")
        self.formLayout.setContentsMargins(0, 0, 0, 0)
        self.sinbtn = QPushButton(self.centralwidget)
        self.sinbtn.setObjectName(u"sinbtn")
        self.sinbtn.setGeometry(QRect(110, 260, 80, 25))
        self.cosbtn = QPushButton(self.centralwidget)
        self.cosbtn.setObjectName(u"cosbtn")
        self.cosbtn.setGeometry(QRect(260, 260, 80, 25))
        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)
    # setupUi

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
        self.sinbtn.setText(QCoreApplication.translate("MainWindow", u"PushButton", None))
        self.cosbtn.setText(QCoreApplication.translate("MainWindow", u"PushButton", None))
    # retranslateUi

 再创建一个文件,使用PySide6来演示Ui

from PySide6.QtWidgets import QApplication, QMainWindow,QWidget
import pyqtgraph as pg
import sys
from PySide6 import QtCore,QtWidgets
import numpy as np
from plot_ui import Ui_MainWindow

class pgplot(QMainWindow):

    def __init__(self):
        super().__init__()
        self.ui = Ui_MainWindow()  
        self.ui.setupUi(self) 
        self.__create_connections()
        

    def __create_connections(self):
        self.ui.sinbtn.clicked.connect(self.__plotsin)
        self.ui.cosbtn.clicked.connect(self.__plotcos)

    def __clear_item(self):# 清除图像
        item_list = list(range(self.ui.formLayout.count()))
        for i in item_list:
            item = self.ui.formLayout.itemAt(i)
            self.ui.formLayout.removeItem(item)
            # if item.widget():
            #     item.widget().deleteLater()
    

    def __plotsin(self):
        self.__clear_item()
        plt= pg.plot()
        plt.setBackground('w')
        pen = pg.mkPen(color='#ff0000',width = 2,style = QtCore.Qt.DashLine)
        x = np.arange(0,160)
        y = np.sin(x*0.1)
        line1 = plt.plot(x,y,pen=pen)                
        self.ui.formLayout.addWidget(plt)

    def __plotcos(self):
        self.__clear_item()
        plt= pg.plot()
        plt.setBackground('w')
        pen = pg.mkPen(color='g',width = 2,style = QtCore.Qt.DashDotDotLine)
        x = np.arange(0,100)
        z = np.cos(x*0.1)
        line2 = plt.plot(x,z,pen=pen)
        self.ui.formLayout.addWidget(plt)



if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = pgplot()
    w.show()
    app.exec()

 

标签:__,self,pyqtgraph,画图,item,ui,formLayout,QTdesigner,MainWindow
From: https://www.cnblogs.com/conpi/p/16774726.html

相关文章

  • pyqtgraph 内嵌到 Qtdesigner 设计界面中
    fromPySide6.QtWidgetsimportQApplication,QMainWindow,QWidgetimportpyqtgraphaspgimportsysfromPySide6importQtCore,QtWidgetsimportnumpyasnpfrom......
  • 【科研工具---图表部分,如何画图从Fig. A 为 Fig. B】
    Q:MATLAB如何修改坐标轴的横纵坐标设置,使得2D图片平铺空间,不存在空白位置A:Step0:MATLAB画图出来的Figure框架,即是以下的左子图。Step1:选择左上角的一栏里面的Pr......
  • python matplotlib 画图神器
    Matplotlib是Python的一个绘图库。它包含了大量的工具,你可以使用这些工具创建各种图形,包括简单的散点图,正弦曲线,甚至是三维图形。Matplotlib 和Matlab的绘图功能相似,但......
  • Excalidraw:开源实用的白板画图工具(在线/本地安装)
    Excalidraw是一款开源的画图工具,可以画一些简单的流程图,显示效果像是用笔在纸上画的一样,操作简单明了,可以在线使用或者通过谷歌浏览器插件安装在本地。在线使用网址:Excal......
  • 第八章 filebeat收集日志与kibana画图
    一、filebeat收集单日志到本地文件1.配置#编辑Filebeat配置文件[root@web01~]#vim/etc/filebeat/filebeat.ymlfilebeat.inputs:-type:logenabled:truepat......
  • 画图工具包plotly使用
    (1)越来越流行plotly(2)替换matplotlibdf=px.data.gapminder()df_2007=df.query("year==2007")fig=px.scatter(df_2007,x="gdpPercap",y="lifeExp",color="cont......
  • QT画图板
    QT画图板画图板简介一、 问题描述实现了画图板功能,可以使用铅笔自由绘制,以及绘制直线,矩形,椭圆,正方形,圆形等多种图形,还可以支持橡皮擦功能、变换画笔和填充颜色、变换画......
  • 学习设计模式和画图
    目录参考参考使用keynote画图https://www.yrunz.com/p/用keynote画出手绘风格的配图/使用plantuml进行设计......
  • 关于AnimInstance中动画图表内判断不写条件不报错问题
     实际上是,在外面过渡中勾选了(基于状态中序列播放器的自动规则) ......
  • PyCharm+PyQt5+QtDesigner配置(三)
    换电脑这么多天了,一直没用python写界面应用,昨天用到,需要重新配置环境,于是开始在百度搜索,看到一篇博客写的挺条理的,嗯是我的菜,于是默默看完,最后发现这位大哥真的是转载的我......