我想在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),如图所示。我不要这个空的情节。
有人可以建议我如何删除/隐藏此弹出图吗?