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

Rich Shepard rshepard at appl-ecosys.com
Thu Apr 29 16:33:25 BST 2021

I'm trying to add a tab's content to a QTabWidget but get this error:
$ python mwe.py 
Traceback (most recent call last):
   File "mwe.py", line 31, in <module>
     mw = MainWindow()
   File "mwe.py", line 20, in __init__
     self.sw = SitesWindow(self)
TypeError: __init__() takes 1 positional argument but 2 were given

It's been a long time since I did any serious python coding and despite my
researching this error on the Web I still fail to see the solution. I know
it's simple but I don't see the two arguments to the assignment. An minimal
example is attached.

Please point out my error.



-------------- next part --------------
#!/usr/bin/env python3

import sys

from PyQt5 import QtWidgets as qtw
from PyQt5 import QtGui as qtg
from PyQt5 import QtCore as qtc

from views.sites import SitesWindow

class MainWindow(qtw.QMainWindow):
    def __init__(self):
        """MainWindow constructor"""


        # tab contents
        self.sw = SitesWindow(self) # line 30 in error msg
        tabs = qtw.QTabWidget()
        # add tab pages here

if __name__ == '__main__':
    app = qtw.QApplication(sys.argv)
    mw = MainWindow()

More information about the PyQt mailing list