Task module makes TypeError

I have this code: (sorry if its long)

class Game(ShowBase):
    def __init__(self):
        global blue
        ShowBase.__init__(self)

        self.pick = loader.loadModel("modelos/pickaxe.bam")
        self.pick.reparentTo(self.render)
        self.pick.setPos(80, -15, 5)
        self.pick.setTag('pickable', '1')
  

        cb2 = CollisionBox(0, 1, 1, 1)
        pickbox = self.pick.attachNewNode(CollisionNode('colNode'))
        pickbox.node().addSolid(cb2)
        pickbox.show()

        self.pickerHandler = CollisionHandlerQueue()
        self.pickerNode = CollisionNode('mouseRay')
        self.pickerNP = camera.attachNewNode(self.pickerNode)
        self.pickerRay = CollisionRay()
        self.pickerNode.addSolid(self.pickerRay)
        self.clicking = False

        self.traverser = CollisionTraverser('traverser1')
        base.cTrav = self.traverser
        self.traverser.addCollider(self.pickerNP, self.pickerHandler)
        self.traverser.showCollisions(render)

 




        def MouseCheck(self, Task):
            mpos = self.mouseWatcherNode.getMouse()
            self.pickerRay.setFromLens(self.camNode, mpos.getX(), mpos.getY())
            self.traverser.traverse(render)
            if self.pickerHandler.getNumEntries() > 0:
                self.pickerHandler.sortEntries()
                pickedObj = self.pickerHandler.getEntry(0).getIntoNodePath()
                pickedObj = pickedObj.findNetTag('pickable')
                if not pickedObj.isEmpty():
                    handlePickedObject(PickedObj) **ignore this line**

            return Task.cont

        taskMgr.add(MouseCheck, 'MouseChecking')

But everytime i run it i get this:

TypeError: Game.init..MouseCheck() missing 1 required positional argument: ‘Task’
Traceback (most recent call last):
File “d:\Users\Bau\Documents\bauti\bauti\bauti\Panda3d\panda3dprimero.py”, line 327, in
app.run()
File “C:\Users\Bau\AppData\Local\Programs\Python\Python310\lib\site-packages\direct\showbase\ShowBase.py”, line 3328, in run
self.taskMgr.run()
File “C:\Users\Bau\AppData\Local\Programs\Python\Python310\lib\site-packages\direct\task\Task.py”, line 553, in run
self.step()
File “C:\Users\Bau\AppData\Local\Programs\Python\Python310\lib\site-packages\direct\task\Task.py”, line 504, in step
self.mgr.poll()
TypeError: Game.init..MouseCheck() missing 1 required positional argument: ‘Task’

And i don’t know what to do.
Anybody knows what is going on?

Your indent levels look confusing.

If MouseCheck is a method of your class then you need self.

taskMgr.add(MouseCheck, ‘MouseChecking’)

try

taskMgr.add(self.MouseCheck, ‘MouseChecking’)

If it is a method defined in your init function, then it should not have self as a parameter.

try

def MouseCheck(Task):

1 Like

Thanks a lot!!! I am a newbie at this so sorry!

Nothing to apologize about… Learning is about getting it wrong.

1 Like