运行环境:python2.7
运行报错:
self.pic1= PlotCanvas(self, width=4, height=5) # 实例化一个画布对象 File "/home/jingzhi/Documents/MetaSim/fall_UI/zzzz.py", line 39, in __init__ self.setParent(parent) TypeError: arguments did not match any overloaded call: QWidget.setParent(QWidget): argument 1 has unexpected type 'fall_UI' QWidget.setParent(QWidget, Qt.WindowFlags): argument 1 has unexpected type 'fall_UI'
报错原因:在外部文件zzz.py里面调用zzzz.py的时候,多写了一行
import matplotlib.pyplot as plt
如下程序高亮位置所示,删掉这行即可。
程序:
文件1:zzz.py 用来调用程序
import sys import matplotlib.pyplot as plt from PySide2.QtWidgets import QApplication sys.path.append('/home/jingzhi/Documents/MetaSim') from fall_UI.zzzz import fall_UI app = QApplication(sys.argv) ex = fall_UI() # print(exitflag) sys.exit(app.exec_())
文件2:zzzz.py
# -*- coding: utf-8 -*- # @Time : 2021/1/23 19:49 # @Author : lo # @FileName: 12.py # @Software: PyCharm import os #from PySide2.QtWidgets import QApplication, QPushButton, import sys from PySide2.QtCore import Qt from PySide2.QtWidgets import * from PySide2.QtGui import QPalette, QBrush, QPixmap sys.path.append('/home/jingzhi/Documents/MetaSim') from PySide2.QtWidgets import QApplication, QMainWindow, QMenu, QVBoxLayout, QSizePolicy, QMessageBox, QWidget, \ QPushButton from PySide2.QtGui import QIcon import math from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.figure import Figure import matplotlib.pyplot as plt from PySide2.QtCore import QTimer import random import numpy as np from scipy import interpolate import threading import Queue as queue from Paras.plot_setting import plot_setting class PlotCanvas(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) import sys sys.path.append('../') from Paras.plot_setting import plot_setting #flag:1,2,3,4 #flag=1 #print("flag",flag) self.plot_setting=plot_setting["1"] self.init_plot()#打开App时可以初始化图片 #self.plot() def plot(self): print("+++++++++++++++++++++++++++") timer = QTimer(self) timer.timeout.connect(self.update_figure) #lambda: self.startClick(queue_start, lock) timer.start(100) def init_plot(self): #flag=1,2,3,4代表pic1-4 POINTS = self.plot_setting["point"] self.x = [i/self.plot_setting["fs"] for i in range(POINTS)] self.y = [None] * POINTS self.axes.set_xlim([0, POINTS]) self.axes.set_ylim(self.plot_setting["set_ylim"]) self.axes.set_xticks(self.plot_setting["set_xticks"]) self.axes.set_yticks(self.plot_setting["set_yticks"]) self.axes.set_autoscale_on(False) self.axes.grid(True) self.axes.plot(self.x, self.y) def update_figure(self): POINTS = self.plot_setting["point"] self.axes.set_xlim([0, POINTS]) self.axes.set_ylim(self.plot_setting["set_ylim"]) self.axes.set_xticks(self.plot_setting["set_xticks"]) self.axes.set_yticks(self.plot_setting["set_yticks"]) self.axes.set_autoscale_on(False) self.axes.grid(True) self.y=self.y[10:]+[1,2,3,4,5,6,7,8,9,0] self.axes.cla() self.axes.plot(self.x, self.y) self.draw() class fall_UI(QWidget): def __init__(self): super(fall_UI,self).__init__() self.initUI() def initUI(self): # 第一行三个框 self.pic1= PlotCanvas(self, width=4, height=5) # 实例化一个画布对象 # # self.text1_1 = QPlainTextEdit() # self.text1_2 = QPlainTextEdit() # self.text1_3 = QPlainTextEdit() layout_row2 = QHBoxLayout() layout_row2.addWidget(self.pic1) # layout_row2.setSpacing(10) self.setLayout(layout_row2) self.setGeometry(900, 300, 640, 800) self.setWindowTitle('Review') self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = fall_UI() sys.exit(app.exec_())