TypeError不知道如何转换参数2(鼠标移动)

2024-03-29 05:17:21 发布

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

我正在用Python构建一个绘图工具。应用程序在没有大小的情况下工作,但当我使用大小时它不工作。我需要做更大的正方形,我需要把列表上的所有值相乘,正如你所看到的。看起来一切正常,但代码不起作用,我遇到以下错误:

ctypes.ArgumentError: argument 2: <class 'TypeError'>: Don't know how to convert parameter 2
import win32api
import time
import ctypes
import mouse

sqx = [10,0,-10,0]
sqy = [0,10,0,-10]
size = 0.5

def mover(x,y):
    ctypes.windll.user32.mouse_event(0x0001,x,y,0,0)

while True:
for i in range(len(sqx)):
    if win32api.GetAsyncKeyState(0x01) < 0:
        newsqx = sqx[i] * size
        newsqy = sqy[i] * size
        mover(newsqx,newsqy)

以下是终端输出:

Terminal output


Tags: 工具import应用程序绘图size情况ctypesmover
1条回答
网友
1楼 · 发布于 2024-03-29 05:17:21

根据win32文档,看起来mouse_event的参数应该是整数:

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-mouse_event

原始的sqxsqy值是整数,但将它们乘以float就将它们变成了float,因此这可能是错误的根源。我可能建议让mover函数将xy转换为int,这样它就可以接受调用者的floatint

def mover(x, y):
    ctypes.windll.user32.mouse_event(0x0001, int(x), int(y), 0, 0)

相关问题 更多 >