我是在pyqt5中调用matplotlib绘图,ui是转换成py文件导入的,qt代码如下
class MainWin(QWidget, Ui_Dialog):
def __init__(self, name='MainWindow'):
super(MainWin, self).__init__()
self.setupUi(self)
self.setWindowTitle(name)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = MainWin('mat')
win.show()
sys.exit(app.exec_())
mat代码如下
class MyMplCanvas(FigureCanvas):
def __init__(self, parent=None, width=1, height=1, dpi=100):
self.fig = Figure(figsize=(width, height), dpi=dpi)
#
super(MyMplCanvas, self).__init__(self.fig)
self.axes = self.fig.add_axes([0.1, 0.1, 0.7, 0.9])
self.axes.cla()
self.compute_initial_figure()
#
# FigureCanvas.__init__(self, self.fig)
self.setParent(parent)
FigureCanvas.setSizePolicy(self, QSizePolicy.Expanding, QSizePolicy.Expanding)
FigureCanvas.updateGeometry(self)
def compute_initial_figure():
pass
class testmat(MyMplCanvas):
def compute_initial_figure(self, df=None):
x = np.linspace(0, 10, 50)
y = x + 1
self.axes.plot(x, y, 'r-.*', lw=1, ms=5)
然后我在qt代码下加入函数,导入多线程
p = threading.Thread(target=self.vvv)
p.start()
def vvv(self):
dc = testmat()
vlay = QtWidgets.QVBoxLayout()
self.widget.setLayout(vlay)
vlay.addWidget(dc)
就无法使用了,加入join的话无法显示窗口,不加入就显示窗口不显示图像,正常调用能显示