pyqt5的一个小坑:QWidget.setParent(QWidget): argument 1 has unexpected type 'fall_UI'

运行环境: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_())

 

posted @ 2021-02-01 18:04  九里九里  阅读(2456)  评论(0编辑  收藏  举报