Переместите курсор мыши к координатам, которые импортированы из текстового файла.

Я новичок в Python! У меня есть текстовый файл с некоторыми координатами x, y, например:

1126 , 600
850 , 254
190 , 240
549 , 109

Я использую Pynput, чтобы переместить мышь в определенное положение, например

mouse.position=(300,500)

Я хочу, чтобы код считывал координаты из текстового файла «XY_test.txt», чтобы он мог печатать координаты, а также перемещать на них курсор.

try:
    file=open("E:\\XY_test.txt",'r')
    coords=file.readlines()
    for i in range (1,2):
        print(coords[i])
        mouse.position=(coords[i])
finally:
    file.close()

С помощью этого кода я могу успешно распечатать координаты, но курсор не перемещается в желаемое положение. Вместо этого курсор переместится в позицию (1,1). Похоже, возникла проблема с форматированием строки "mouse.position = (coords [i])". Он ожидает значение (x, y), но, по-видимому, читает «1126 600» и помещает первую цифру как значение x, а вторую цифру как значение y. Я обнаружил это, когда использовал mouse.move (coords [i]) вместо mouse.position = (coords [i]), как показано ниже.

>>> try:
    file=open("E:\\XY_test.txt",'r')
    coords=file.readlines()
    for i in range (1,2):
        print(coords[i])
        mouse.move(coords[i])
finally:
    file.close()


1126 , 600
Traceback (most recent call last):
  File "<pyshell#181>", line 6, in <module>
    mouse.move(coords[i])
TypeError: move() missing 1 required positional argument: 'dy'

Я не уверен, как правильно заставить код читать строки текстового файла и правильно использовать их в качестве координат.


person GinoCheeseSteaks    schedule 28.01.2020    source источник
comment
Когда вы читаете из файла, это строка или число?   -  person wwii    schedule 28.01.2020
comment
Как отлаживать небольшие программы. В цикле выведите coords[i] - что произойдет? Зачем?   -  person wwii    schedule 28.01.2020
comment
...don't know what to try next - Добро пожаловать в SO. Это не дискуссионный форум или руководство. Пожалуйста, пройдите тур и найдите время, чтобы прочитать Как спросить и другие ссылки на этой странице. Потратьте некоторое время на учебник, попрактиковавшись в примерах.   -  person wwii    schedule 28.01.2020


Ответы (1)


Похоже, ваш список координат будет выглядеть примерно так:

coords=['1126 , 600', 850 , 254', '190 , 240', '549 , 109']

Итак, что вы фактически передаете mouse.move():

mouse.move('1126, 600') вместо mouse.move(1126, 600).

Вам нужно split каждую координату на ' , ', привести каждую сторону к int, а затем передать их как два отдельных аргумента.

person Ahndwoo    schedule 29.01.2020
comment
@GinoCheeseSteaks Рад, что это сработало! Если проблема решена, поставьте галочку рядом с моим ответом, чтобы отметить его как правильный. Ваше здоровье :) - person Ahndwoo; 31.01.2020