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_())

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM