问题描述
我想使用pyqt5 GUI显示灰度图像并连续更新图像显示,但是matplotlib
每次更新显示时都会创建一个新的颜色栏。
下面是代码。
from PyQt5.QtWidgets import*
from matplotlib.backends.backend_qt5agg import FigureCanvas
from matplotlib.figure import Figure
class MplWidget(QWidget):
def __init__(self,parent = None):
QWidget.__init__(self,parent)
self.canvas = FigureCanvas(Figure())
vertical_layout = QVBoxLayout()
vertical_layout.addWidget(self.canvas)
self.canvas.axes = self.canvas.figure.add_subplot(111)
self.setLayout(vertical_layout)
from PyQt5.QtWidgets import*
from PyQt5.uic import loadUi
from matplotlib.backends.backend_qt5agg import (NavigationToolbar2QT as NavigationToolbar)
import numpy as np
import random
class MatplotlibWidget(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
loadUi("display_test.ui",self)
self.pushButton_2.clicked.connect(self.update)
self.addToolBar(NavigationToolbar(self.MplWidget.canvas,self))
data = np.random.rand(512,512)
self.MplWidget.canvas.axes.clear()
self.d = self.MplWidget.canvas.axes.imshow(data,cmap="gray",norm=None)#,vmin=-1.2,vmax=1.2,interpolation='none')
self.MplWidget.canvas.figure.colorbar(self.d)
self.MplWidget.canvas.draw()
def update(self):
data = np.random.randint(0,1024,(512,512))
self.MplWidget.canvas.axes.clear()
self.d = self.MplWidget.canvas.axes.imshow(data,norm=None)
self.MplWidget.canvas.figure.colorbar(self.d)
self.MplWidget.canvas.draw()
app = QApplication([])
window = MatplotlibWidget()
window.show()
app.exec_()
如果更新功能中没有self.MplWidget.canvas.axes.clear()
,则更新时图像显示比例不会改变,并且高价值图像看起来会饱和,全是白色。
如果我没有在更新功能中添加self.MplWidget.canvas.figure.colorbar(self.d)
,那么颜色栏将保持不变。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)