"Где Мышь прямо сейчас?" - PullRequest
1 голос
/ 24 мая 2019

Я пытаюсь написать программу, которая будет постоянно отображать x- и y-координаты курсора мыши при его перемещении (Автоматизация скучных вещей в python, стр. 417).

Я попытался настроить отступ операторов Try, но все еще получение сообщения об ошибке отступа.

import pyautogui

print('press Ctrl-C to quit.')

try:

    while True:

except KeyboardInterrupt:

     print('\nDone.')

        x,y=pyautogui.position()

        positionStr='X: ' + str(x).rjust(4) + 'Y: ' + str(y).rjust(4)

        print(positionStr,end='')

        print('\b'*len(positionStr),end='',flush=True)

Я ожидал вывод двух строк, как показано ниже:

нажмите Ctrl-C, чтобы выйти. X: 290 Y: 424

Но результат, который я получил, был:

 File "<ipython-input-2-b3f3ee266ed5>", line 6

    except KeyboardInterrupt:
                             ^
IndentationError: expected an indented block

1 Ответ

1 голос
/ 24 мая 2019

Код должен быть:

import pyautogui

print('press Ctrl-C to quit.')

try:
    while True:
        x,y=pyautogui.position()

        positionStr='X: ' + str(x).rjust(4) + 'Y: ' + str(y).rjust(4)

        print(positionStr,end='')

        print('\b'*len(positionStr),end='',flush=True)

except KeyboardInterrupt:
    pass

У вас было тело цикла в блоке обработки исключений.

По крайней мере, теперь это работает, чтобы сделать вывод более полезным.Необходимо только печатать, если позиция изменилась с момента последнего опроса, и вставить в цикл time.sleep(0.1).

import pyautogui
import time

print('press Ctrl-C to quit.')

last_position = None

try:
   while True:
       x,y=position=pyautogui.position()

       if position != last_position:

           positionStr='X: ' + str(x).rjust(4) + 'Y: ' + str(y).rjust(4)
           print(positionStr,end='')
           print('\b'*len(positionStr),end='',flush=True)

       last_position = position
       time.sleep(0.1)

except KeyboardInterrupt:
   pass

Это уменьшает скорость цикла и толькораспечатать, если позиция изменилась.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...