运行 一个简单的 pynput 程序时出错

Error when running a simple pynput program

我正在制作一个项目,其中一部分是制作一个程序,该程序在激活时会在我左键单击时自动右键单击。但是当我启动程序并左键单击时,出现 returns 错误: TypeError: combatModules.on_click() takes 4 positional arguments but 5 were given 我的代码:(我正在使用线程,所以我可以从同一个程序中同时拥有多个程序 运行。)

import pydirectinput as pa
import time as t
import pynput
import threading
class combatModules:
    def __init__(self) -> None:
        pass
    
    def on_click(x, y, button, pressed):
        if button == pynput.mouse.Button.left:
            print('{} at {}'.format('Pressed Left Click' if pressed else 'Released Left Click', (x, y)))
            pa.rightClick()
        else:
            print('{} at {}'.format('Pressed Right Click' if pressed else 'Released Right Click', (x, y)))
        
    def blockHitCode(self):
        for i in range(100):
            listener = pynput.mouse.Listener(on_click=self.on_click)
            listener.start()
            listener.join()
    def blockHit(self):
        blockHitThread = threading.Thread(target=self.blockHitCode)
        blockHitThread.start()

一点解释:blockHit()是从主程序执行的。

您的方法缺少 self 参数。这对于 class 中的方法是必需的,就像 blockHitCodeblockHit.

中的方法一样

这应该可以解决您遇到的错误:

def on_click(self, x, y, button, pressed):