運行環境: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_())