在些代码之前,环境准备:
https://www.jb51.net/article/170810.htm,长时间不使用,系统环境变化。可以参考自己写的。
1.功能:将两种TXT数据转换为图片,并在界面上显示。
2.实现
1.qt dessigner上布局,本次布局很简单所以不用多说。
2.pyqt5上信号与槽的使用和代码编写
self.chooceTXTPathpushButton.clicked.connect(self.choose_TXTfile) # 信号和槽
self.chooceWavPathpushButton.clicked.connect(self.choose_imagePath) # 信号和槽self.startpushButton.clicked.connect(self.startTran)
我的理解是类似于中断的触发一样的。一般使用 Button 或者Box控件。
3.遇到的问题
1.matplotlib嵌入到pyqt生成图片
# pyqt5固定调用 matplotlib 的定义类
class MyMplCanvas(FigureCanvas):
def __init__(self, parent=None, width=5, height=4, dpi=100):
fig = Figure(figsize=(width, height), dpi=dpi)
self.axes = fig.add_subplot(111)
FigureCanvas.__init__(self, fig)
self.setParent(parent)
FigureCanvas.setSizePolicy(self,
QSizePolicy.Expanding,
QSizePolicy.Expanding)
FigureCanvas.updateGeometry(self)
# 在 widget 控件中垂直布局 # 实例化一个FigureCanvasQTAgg对象self.figure1
# 添加布局 ,# 将实例化对象self.figure1添加到垂直布局layout中
self.layout = QVBoxLayout(self.widget)
self.figure = MyMplCanvas(self.widget, width=7, height=6, dpi=100)
self.layout.addWidget(self.figure)
# 加入图片数据
self.figure.axes.plot(capture_card_data)
2.删除布局中的控件,问题在于不删除控件,数据一直处在,图片显示多个波形图。
# 清除布局中的控件
import sip
self.layout.removeWidget(self.figure)
sip.delete(self.figure)
4.结果显示