如何在PyQt5 dockWidget中显示实时arduino输出图像?

我想在pyQt5 dockWidget中显示实时arduino输出数据。为此,我使用了以下代码,该代码在dockWidget上显示了图像。

def initUI(self):
    self.setWindowTitle(self.title)
    self.setGeometry(self.left,self.top,self.screen.width()-100,self.screen.height() - 100)
    self.fig = Figure(figsize=(9,6),dpi=100)
    self.canvas = FigureCanvas(self.fig)

    self.dock1 = QDockWidget("Scan",self)
    self.dock1.setWidget(self.canvas)
    self.dock1.setStyleSheet("font: 12pt cambria")
    self.dock1.resize(QSize(1300,400))
    self.dock1.adjustSize()
    self.addDockWidget(Qt.LeftDockWidgetarea,self.dock1,Qt.Horizontal)
    self.dock1.setLayout(QVBoxLayout())

    self.dock4 = QDockWidget("ToolBox",self)
    self.dock4.setStyleSheet("font: 12pt cambria")

    self.tabs = Qtabwidget()
    self.tabs.setTabPosition(Qtabwidget.North)
    self.inputTab = QWidget()

    self.tabs.addTab(self.inputTab,"Scanning Parameters")
    self.inputTab.layout = QFormLayout(self)

    #Input parameter
    firstGroupBox = QGroupBox("Input")
    firstLayout = QFormLayout()

    buttonStart = QPushButton('Start Scan',self)
    buttonStart.clicked.connect(self.start_scan)
    firstLayout.addRow(buttonStart)

    self.inputTab.layout.addRow(firstGroupBox)
    self.inputTab.setLayout(self.inputTab.layout)
    firstGroupBox.setLayout(firstLayout)

    self.addDockWidget(Qt.RightDockWidgetarea,self.dock4,Qt.Horizontal)
    self.dock4.setWidget(self.tabs)

def makeFig(self):#plot figures
    self.fig.clear()
    self.ax = self.fig.add_subplot(111)
    self.ax.imshow(np.transpose(self.df1),cmap='jet',aspect='auto')
    self.ax.set(title="B-scan image",xlabel="Distance (cm)")
    self.dock1.setWidget(self.canvas)
    self.canvas.draw()
    self.canvas.show()

@pyqtSlot()
def start_scan(self):
    arduinoSerialData = serial.Serial('com4',9600)  # Create Serial port object called arduinoSerialData
    oldData = 0
    count = 0
    out = []

    while True:
        while (arduinoSerialData.inWaiting() == 0):
            pass
        try:
            myData = arduinoSerialData.readline()
            if int(myData) > oldData:
                # Execute the measurement
                output1 = list(myData)
                out.append(output1)
                self.df1 = pd.DataFrame(out)
                drawnow(self.makeFig)
                count = count + 1
                if count > 20:
                    break
            else:
                print("Pull up")
        except(KeyboardInterrupt,SystemExit,IndexError,ValueError):
            pass

由于我正在使用drawow,因此其中包含plt.show()会导致弹出一个空图(图1),如图所示。我不要这个空的情节。

如何在PyQt5 dockWidget中显示实时arduino输出图像?

有人可以建议我如何删除/隐藏此弹出图吗?

wal325 回答:如何在PyQt5 dockWidget中显示实时arduino输出图像?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3167083.html

大家都在问