matplotlib embeded in Python Qt

该代码示例展示如何在Python的Qt界面中集成matplotlib库,创建一个主窗口应用,包含用于绘图的figure和canvas,以及开始和暂停按钮。它绘制了不同伽马值的图形,并使用FuncAnimation实现动态更新功能,但动画部分未完全实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import sys
import numpy as np
from qtpy.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,QPushButton
from matplotlib.backends.backend_qtagg import FigureCanvas, NavigationToolbar2QT as NavigationToolbar
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation


class MainWin(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("matplotlib embeded in Python Qt")
        self.initUI()
        self.plotfig()
        
    def initUI(self):
        self.fig = plt.figure()
        self.canvas=FigureCanvas(self.fig)
        # self.figtoolbar=NavigationToolbar(self.canvas, self)
        
        self.btn_start=QPushButton("start")
        self.btn_pause=QPushButton("pause")
        hlayout=QHBoxLayout()
        hlayout.addStretch(1)
        hlayout.addWidget(self.btn_start)
        hlayout.addWidget(self.btn_pause)
        hlayout.addStretch(1)
        
        vlayout=QVBoxLayout()
        # vlayout.addWidget(self.figtoolbar)
        vlayout.addWidget(self.canvas)
        vlayout.addLayout(hlayout)
        widget=QWidget()
        widget.setLayout(vlayout)
        self.setCentralWidget(widget)
        
        
            
    def plotfig(self):
    	gamma = 2.2
    	ax = self.fig.subplots()
    	self.x = np.arange(0, 256, 1)
    	self.y1= 255 / (pow(255,gamma))   *    (pow(self.x,gamma))
    	self.y2= 255 / (pow(255,1/gamma))   *    (pow(self.x,1/gamma))
    	self.y3= self.x
    	ax.plot(self.y1,'r',label='gamma = 2.2')
    	ax.plot(self.y2,'b',label='gamma = 1/2.2')
    	ax.plot(self.y3,'--',)
        ax.legend() # 为当前axes放置标签
    	ax.autoscale_view()

		# self.t = np.linspace(0,2*np.pi,50)
        # self.lines=ax.plot(np.sin(self.t))
        # ax.autoscale_view()
        # 
        # def aniupdate(i):
        #     t=self.t+2*np.pi*i/50
        #     self.lines[0].set_ydata(np.sin(t))
        #     return self.lines
        # self.ani=FuncAnimation(self.fig, aniupdate, interval=100)
        # self.btn_start.clicked.connect(self.ani.resume)
        # self.btn_pause.clicked.connect(self.ani.pause)

        
app=QApplication(sys.argv)
win = MainWin()
win.show()
sys.exit(app.exec())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值