Я хочу отображать текущие выходные данные arduino в pyQt5 dockWidget. Для этого я использовал приведенный ниже код, который отображает изображение в 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
Так как я использую drawnow, в котором есть plt.show (), что приводит к появлению пустого графика (рисунок 1), как показано на рисунке. Мне не нужен этот пустой график.
Кто-нибудь может подсказать, как удалить / скрыть этот всплывающий график?