
python 基础烂,pyqt 写一个界面调用自定义组件,结果 Pycharm 提示传参错误
自定义组件类部分代码,Show_EMG.py
from PyQt5 import QtCore from PyQt5.QtWidgets import QWidget from pyqtgraph import PlotWidget import pyqtgraph as pg import numpy as np # 绘图组件,输出 5~550 范围的数值 class Plot_Show(QWidget): ''' 定义绘图时的参数:QWidget 、组件 y 作标、组件 x 作标、y 轴数据、组件宽高、组件对象文本 Form,y,x,data,length = 1800, width = 250, high = 120, text = "sEMG Voltage" ''' def __init__(self,Form,y,x,data,**kwargs): super().__init__(self,**kwargs) # length = 1800, width = 250, high = 120, text = "sEMG Voltage" self.Form=Form self.y=y self.x=x self.data=data self.length={"length":kwargs["length"] if kwargs.__contains__("length") else 1800} self.width={"width":kwargs["width"] if kwargs.__contains__("width") else 250} self.high={"high":kwargs["high"] if kwargs.__contains__("high") else 120} self.text={"text":kwargs["text"] if kwargs.__contains__("text") else "sEMG Voltage"} self.initUI() def xxx .... 在别的类内实例化组件类并传参,main_plot.py
from main_plot import EMG from pyqtgraph import PlotWidget import pyqtgraph as pg import numpy as np from PyQt5 import QtCore class Plot_Show(object): ''' 绘图组件,输出 5~550 范围的数值 定义绘图时的参数:QWidget 、组件 y 作标、组件 x 作标、y 轴数据、组件宽高、组件对象文本 Form,y,x,data,length = 1800, width = 250, high = 120, text = "sEMG Voltage" ''' def __init__(self,Form,y,x,data,**kwargs): super().__init__(self,**kwargs) # length = 1800, width = 250, high = 120, text = "sEMG Voltage" self.Form=Form self.y=y self.x=x self.data=EMG()[data] self.length={"length":kwargs["length"] if kwargs.__contains__("length") else 1800} self.width={"width":kwargs["width"] if kwargs.__contains__("width") else 250} self.high={"high":kwargs["high"] if kwargs.__contains__("high") else 120} self.text={"text":kwargs["text"] if kwargs.__contains__("text") else "sEMG Voltage"} .... 结果报错:
Traceback (most recent call last): File "C:\Users\Administrator\PycharmProjects\pythonProject\main_plot.py", line 13, in <module> import Show_EMG File "C:\Users\Administrator\PycharmProjects\pythonProject\Show_EMG.py", line 1, in <module> from main_plot import EMG File "C:\Users\Administrator\PycharmProjects\pythonProject\main_plot.py", line 87, in <module> class Ui_Form(Show_EMG): TypeError: module() takes at most 2 arguments (3 given) 是类的继承关系吗,不太明白怎么改,我自学 python 的,基础不太好
1 im67 Mar 31, 2022 module() takes at most 2 arguments (3 given):某个类只需要 2 个参数,但是给了 3 个 |
2 ALLROBOT OP Show_EMG.py 贴错代码了 import Show_EMG from PyQt5 import QtCore, QtWidgets class Ui_Form(Show_EMG): def __init__(self): super().__init__() self.setupUi(self) def setupUi(self, Form): Form.resize(820, 454) Form.setObjectName("Form") self.plot1= Show_EMG.Plot_Show(Form=Form,y=10, x=10, data=0, text="sEMG1") |
3 ALLROBOT OP 屮,有图片没法上传,请不要在每一个回复中都包括外链,这看起来像是在 spamming ,太影响人心态了吧 |
4 weyou Mar 31, 2022 via Android class Ui_Form(Show_EMG) 模块当成类来继承? 这代码实在是太乱了,看着辣眼睛 |
5 passMeBy Mar 31, 2022 是不是参数传递的是元组,没有用()包起来 |
6 lookStupiToForce Mar 31, 2022 你确定是"import Show_EMG || class A(Show_EMG)" 而不是"from Show_EMG import Plot_Show|| class A(Plot_Show)"或者直接 class A(Show_EMG.Plot_Show) ? 从一个模块文件继承,我还真没见过这种用法 你要不然搜搜 stackoverflow ? |
7 ALLROBOT OP @lookStupiToForce #6 @passMeBy #5 @weyou #4 我太菜了,对不起,下次一定看看 python 补补基础我把继承取消了,改 object ,直接实例化自定义组件类,结果还是报错,提示 TypeError: arguments did not match any overloaded call: https://gist.github.com/allrobot/adba1172ac27c260c139ca2aa06206b5 https://gist.github.com/allrobot/24c250d16edb8b848c4f2168cd1fad5e |
8 lookStupiToForce Mar 31, 2022 真的是太乱了,不知道你是文件命名有重复还是咋滴,单独看这两个文件居然还有互相调用?这样很容易导致各种意料外的问题,建议如果真有互相调用,先去除互相调用确认继承依赖关系,把要调用的公共模块再独立出来成一个新的文件 然后你发现没,报错已经不同了,所以不贴新的 traceback 信息我们也不清楚是啥引起的。而且也没在你的 main_plot.py 里找到 EMG 这个变量(你在 Show_EMG.py 引用的它),贴就贴全好伐? |
9 ALLROBOT OP @lookStupiToForce #8 不好意思,我把调用的公共模块独立成新的文件了( EMG 暂时默认为 0 ) 把 Show_EMG 的**kwargs 参数去掉了,总算跑通(虽然跑了一会儿就自我崩溃了) ble.py 蓝牙读取的值暂存 EMG 数组,main_plot.py 实例化 Show_EMG 绘图类并输出,Show_EMG 类读取 ble.py 的蓝牙值 ble.py https://gist.github.com/allrobot/1547447f313942f278118cb2e569f59f Show_EMG https://gist.github.com/allrobot/c2544b5de7afdbbbfc89c9d476fc5b6c main_plot.py https://gist.github.com/allrobot/d971747af566871f4a039d99fdb9335f |
10 ALLROBOT OP 我加下线程看看能解决自我崩溃不 |
11 ec0 Mar 31, 2022 |