子类化:使用1个位置参数,但给出了2个

2024-10-03 11:25:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将一个内置的qtui类作为子类。在QtDesigner中,我将QGraphicsView“升级”为“ResultView”,并在加载和使用UI的类中添加include

uic.loadUi('mainwindow.ui', self)

加载ui表

为了确保它的加载正确,子类看起来像这样

^{pr2}$

除非我遗漏了什么,否则只会创建一个具有不同名称的qgraphicsview。在

但是,我得到了一个错误

TypeError: __init__() takes 1 positional argument but 2 were given

第二个论点是什么?在

降级回qgraphicsview修复了这个错误,所以我很确定是这个类内部导致了这个错误。在

Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2017.2.2\helpers\pydev\pydevd.py", line 1596, in <module>
    globals = debugger.run(setup['file'], None, None, is_module)
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2017.2.2\helpers\pydev\pydevd.py", line 1023, in run
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2017.2.2\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "C:/Users/swalsh/Desktop/Mandelbrot/main.py", line 89, in <module>
    window = MainWindow()
  File "C:/Users/swalsh/Desktop/Mandelbrot/main.py", line 15, in __init__
    uic.loadUi('mainwindow.ui', self)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\__init__.py", line 226, in loadUi
    return DynamicUILoader(package).loadUi(uifile, baseinstance, resource_suffix)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\Loader\loader.py", line 72, in loadUi
    return self.parse(filename, resource_suffix, basedir)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 1000, in parse
    actor(elem)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 807, in createUserInterface
    self.traverseWidgetTree(elem)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 785, in traverseWidgetTree
    handler(self, child)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 262, in createWidget
    self.traverseWidgetTree(elem)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 785, in traverseWidgetTree
    handler(self, child)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 482, in createLayout
    self.traverseWidgetTree(elem)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 785, in traverseWidgetTree
    handler(self, child)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 525, in handleItem
    self.traverseWidgetTree(elem)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 785, in traverseWidgetTree
    handler(self, child)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 262, in createWidget
    self.traverseWidgetTree(elem)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 785, in traverseWidgetTree
    handler(self, child)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 262, in createWidget
    self.traverseWidgetTree(elem)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 785, in traverseWidgetTree
    handler(self, child)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 482, in createLayout
    self.traverseWidgetTree(elem)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 785, in traverseWidgetTree
    handler(self, child)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 525, in handleItem
    self.traverseWidgetTree(elem)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 785, in traverseWidgetTree
    handler(self, child)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 262, in createWidget
    self.traverseWidgetTree(elem)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 785, in traverseWidgetTree
    handler(self, child)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 262, in createWidget
    self.traverseWidgetTree(elem)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 785, in traverseWidgetTree
    handler(self, child)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 482, in createLayout
    self.traverseWidgetTree(elem)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 785, in traverseWidgetTree
    handler(self, child)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 525, in handleItem
    self.traverseWidgetTree(elem)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 785, in traverseWidgetTree
    handler(self, child)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 262, in createWidget
    self.traverseWidgetTree(elem)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 785, in traverseWidgetTree
    handler(self, child)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 262, in createWidget
    self.traverseWidgetTree(elem)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 785, in traverseWidgetTree
    handler(self, child)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 482, in createLayout
    self.traverseWidgetTree(elem)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 785, in traverseWidgetTree
    handler(self, child)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 525, in handleItem
    self.traverseWidgetTree(elem)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 785, in traverseWidgetTree
    handler(self, child)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 253, in createWidget
    self.stack.push(self.setupObject(widget_class, parent, elem))
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 217, in setupObject
    obj = self.factory.createQObject(clsname, name, args, is_attribute)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\objcreator.py", line 124, in createQObject
    return self._cpolicy.instantiate(factory, *args, **kwargs)
  File "C:\Users\swalsh\Anaconda3\lib\site-packages\PyQt5\uic\Loader\qobjectcreator.py", line 139, in instantiate
    return clsObject(*ctor_args)
TypeError: __init__() takes 1 positional argument but 2 were given

Tags: inpyselflibpackageslinesiteusers
1条回答
网友
1楼 · 发布于 2024-10-03 11:25:50
from PyQt5 import QtWidgets

class ResultView(QtWidgets.QGraphicsView):
    def __init__(self, parent):
        super(ResultView, self).__init__(parent)

或者

^{pr2}$

正确的语法是:

super(AnotherDialog, self).__init__(parent, **kwargs)

相关问题 更多 >