Ограничение области, в которой будет работать функция мыши PyAutoGui - PullRequest
0 голосов
/ 27 апреля 2018

Я хочу создать программу, которая будет рисовать произвольно на краске, но когда я оставляю ее в покое на длительное время, она минимизирует рисование и перемещает все мои файлы Есть ли способ, чтобы pyautogui не перемещать мышь за пределы диапазона? Заранее спасибо!

import pyautogui, time, random
time.sleep(5)
pyautogui.click()    # click to put drawing program in focus
distance = random.randrange(200,300)
while 6 > 0:
    pyautogui.dragRel(distance, 0)   # move right
    distance = random.randrange(-50,50)
    pyautogui.dragRel(0, distance)   # move down
    distance = random.randrange(-50,50)
    pyautogui.dragRel(-distance, 0)  # move left
    distance = random.randrange(-50,50)
    pyautogui.dragRel(0, -distance)  # move up

Я хочу, чтобы он оставался в верхнем левом углу 24,163 Нижний правый 1902,996

1 Ответ

0 голосов
/ 27 апреля 2018

pyautogui не сделает это за вас, но вы можете отследить положение x и y и убедиться, что оно остается в пределах:

    import pyautogui, time, random

    minx = 24
    miny = 163
    maxx = 1902
    maxy = 996
    maxmove = 50
    x = (maxx-minx)/2
    y = (maxy-miny)/2
    time.sleep(5)
    pyautogui.moveTo(x, y)
    pyautogui.click()    # click to put drawing program in focus


    def inx(x):
        return x <= maxx and x >= minx


    def iny(y):
        return y <= maxy and y >= miny


    def xdrag(x):
        distx = random.randrange(maxmove) - maxmove/2
        if inx(x + distx):
            x = x + distx
            pyautogui.dragRel(distx, 0)


    def ydrag(y):
        disty = random.randrange(maxmove) - maxmove/2
        if iny(y + disty):
            y = y + disty
            pyautogui.dragRel(0, disty)


    count = 0
    while count < 100: # no infinite loop
        xdrag(x)
        ydrag(y)
        count += 1
...