运行 一个简单的 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 中的方法是必需的,就像 blockHitCode
和 blockHit
.
中的方法一样
这应该可以解决您遇到的错误:
def on_click(self, x, y, button, pressed):
我正在制作一个项目,其中一部分是制作一个程序,该程序在激活时会在我左键单击时自动右键单击。但是当我启动程序并左键单击时,出现 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 中的方法是必需的,就像 blockHitCode
和 blockHit
.
这应该可以解决您遇到的错误:
def on_click(self, x, y, button, pressed):