怎么在Qt Designer设计的界面上显示Matplotlib的绘图?

2024-05-26 19:36

本文主要是介绍怎么在Qt Designer设计的界面上显示Matplotlib的绘图?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先,利用Qt Designer设计界面。
在这里插入图片描述
设计好后保存为ui文件。
接着,将ui文件转为py文件。
我喜欢在python中进行转换,因此把转换命令封装为函数,运行一下即可。

import os
# pyuic5 -o output_file.py input_file.ui
#通过命令把.ui文件转换成.py文件
def ui_to_py(path_ui,path_py):'''把ui文件转为py文件.path_ui:ui文件路径,path_py:py文件路径'''cmd = f'pyuic5 -o {path_py} {path_ui}'os.system(cmd)if __name__ =="__main__":ui='G:/MyPythonFiles/pyqt绘图测试界面.ui'py='G:/MyPythonFiles/pyqt绘图测试界面.py'ui_to_py(ui,py)print('转换完毕')

转换完成后的代码如下:

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'G:/MyPythonFiles/pyqt绘图测试界面.ui'
#
# Created by: PyQt5 UI code generator 5.15.10
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(1260, 689)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.graphicsView = QtWidgets.QGraphicsView(self.centralwidget)self.graphicsView.setGeometry(QtCore.QRect(370, 20, 801, 581))self.graphicsView.setObjectName("graphicsView")MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 1260, 26))self.menubar.setObjectName("menubar")MainWindow.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "绘图测试"))

然后就是使用Matplotlib绘制图片,然后在我们刚才设计的界面上显示了。
此时,我们需要写一个类,继承在Qt Designer上设计的界面。
同时,创建一个QGraphicsScene,将其添加到self.graphicsView中。

就是这么简单!
但是因为找不到相关的资料,一开始我研究了好多天好多天,一直不得要领!简直是太痛苦了!
好在,最后还是弄明白了!ChatGTP帮了我许多忙!


from PyQt5.QtWidgets import QMainWindow, QGraphicsScene, QGraphicsView,QApplication
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import sysimport numpy as np
import matplotlib.pyplot as plt
# from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvasfrom pyqt绘图测试界面 import *class MyWindow(QMainWindow,Ui_MainWindow):def __init__(self):# 继承设计的ui界面super().__init__()# 继承其方法self.setupUi(self)self.retranslateUi(self)""" QGraphicsScene是Qt中的一个类,它是2D图形界面的基础,可以在其上添加各种图形项,例如线条、矩形、椭圆、文本、像素图等,还可以设置它们的位置、大小、旋转等属性。而QGraphicsView则是用于显示QGraphicsScene的视图类,可以实现缩放、平移等交互操作,以及使用鼠标对图形项进行选择、移动等操作。 """# 创建 QGraphicsScene,并添加到QGraphicsViewself.scene = QGraphicsScene(self)self.graphicsView.setScene(self.scene)# 创建 Matplotlib Figure 和 FigureCanvasself.figure = Figure()# 把figure转为pyqt的一个控件self.canvas = FigureCanvas(self.figure)self.axes = self.figure.add_subplot(111)# 将 FigureCanvas 添加到 QGraphicsScene 中self.scene.addWidget(self.canvas)self.myplot()def myplot(self):# 绘制图像x = np.linspace(0, 10, 100)y = np.sin(x)self.axes.plot(x, y)if __name__ == '__main__':app = QApplication(sys.argv)window = MyWindow()window.show()sys.exit(app.exec_())

在这里插入图片描述

这篇关于怎么在Qt Designer设计的界面上显示Matplotlib的绘图?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1005389

相关文章

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

基于Qt Qml实现时间轴组件

《基于QtQml实现时间轴组件》时间轴组件是现代用户界面中常见的元素,用于按时间顺序展示事件,本文主要为大家详细介绍了如何使用Qml实现一个简单的时间轴组件,需要的可以参考下... 目录写在前面效果图组件概述实现细节1. 组件结构2. 属性定义3. 数据模型4. 事件项的添加和排序5. 事件项的渲染如何使用

LinuxMint怎么安装? Linux Mint22下载安装图文教程

《LinuxMint怎么安装?LinuxMint22下载安装图文教程》LinuxMint22发布以后,有很多新功能,很多朋友想要下载并安装,该怎么操作呢?下面我们就来看看详细安装指南... linux Mint 是一款基于 Ubuntu 的流行发行版,凭借其现代、精致、易于使用的特性,深受小伙伴们所喜爱。对

macOS怎么轻松更换App图标? Mac电脑图标更换指南

《macOS怎么轻松更换App图标?Mac电脑图标更换指南》想要给你的Mac电脑按照自己的喜好来更换App图标?其实非常简单,只需要两步就能搞定,下面我来详细讲解一下... 虽然 MACOS 的个性化定制选项已经「缩水」,不如早期版本那么丰富,www.chinasem.cn但我们仍然可以按照自己的喜好来更换

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件