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 2022-03-31 00:51:59 +08:00
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 2022-03-31 01:53:38 +08:00 via Android 1
class Ui_Form(Show_EMG)
模块当成类来继承? 这代码实在是太乱了,看着辣眼睛 |
5
passMeBy 2022-03-31 08:57:30 +08:00
是不是参数传递的是元组,没有用()包起来
|
6
lookStupiToForce 2022-03-31 10:49:25 +08:00
你确定是"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 2022-03-31 12:08:04 +08:00
真的是太乱了,不知道你是文件命名有重复还是咋滴,单独看这两个文件居然还有互相调用?这样很容易导致各种意料外的问题,建议如果真有互相调用,先去除互相调用确认继承依赖关系,把要调用的公共模块再独立出来成一个新的文件
然后你发现没,报错已经不同了,所以不贴新的 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 2022-03-31 16:01:18 +08:00
|