Pyautogui - praca na określonym regionie na ekranie

Pyautogui - praca na określonym regionie na ekranie
R1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 149
0

Witam ponownie :)!

Idąc dalej z gotowym skryptem na wyszukiwanie w pętli obrazów chciałbym aby mój skrypt wyszukiwał pętle z listy obrazków na określonym terenie na ekranie albo w jakimś określonym "okienku" aplikacji.

Ma ktoś pomysł jak to ogarnąć?

stivens
  • Rejestracja: dni
  • Ostatnio: dni
1

Dobra. Moze jednak rozumiem

chciałbym aby mój skrypt wyszukiwał (...) na określonym terenie na ekranie

Idac za dokumentacja

Kopiuj
pyautogui.locateAllOnScreen('someButton.png')

     (1101, 252, 50, 50),
     (59, 481, 50, 50),
     (1395, 640, 50, 50),
     (1838, 676, 50, 50)

I teraz wystarczy dla kazdego zwroconego wyniku sprawdzic czy zawiera sie w okreslonym prostokacie na ekranie.
Cos ala

Kopiuj
if btn.x in range(500,1001) and btn.y in range(300,901):
R1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 149
0

EDIT!!!

Aby lepiej każdy zrozumiał o co mi chodzi załóżmy że mam skrypt do wykrywania przycisków według tego pyautogui co ogarnąłem w poprzednim moim temacie. Wszystko śmiga fajnie ale co gdybym chciał odpalić dwie takie same aplikacje? Skrypt wariuje bo gdy na okienku pierwszym znajdzie wymagany przycisk to wyświetla oczywiście komunikat że znaleziono ale to co się dzieje na drugim okienku ma gdzieś :D Chciałbym aby skrypt wykonywał swój kod na określonym okienku Windows lub w określonym regionie, aby to zobrazować proszę fotka:

https://zapodaj.net/02cf2781aa851.jpg.html

Uruchomić dwa programy które będą miały określone regiony (okienko1, okienko2) w których będą działały i nie będą zwracały na siebie uwagi

stivens
  • Rejestracja: dni
  • Ostatnio: dni
0

W ogole nie wiem czy nie lepszy bylby w tym AutoIT

https://github.com/jacexh/pyautoit

R1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 149
0

Mądry z Ciebie człowiek panie Stivens. Co do autoit, nie mam zielonego pojęcia co to i jak to działa ale fajnie byłoby gdybym mógł już na samym początku programu zidentyfikować okienko na którym ma pracować dalsza część kodu i żeby nie zwracał uwagi na to że obok jest drugie takie samo okienko które ma też takie same przyciski ale na nie nie zwracamy uwagi bo tamtym drugim oknem zajmuje się drugi taki sam program

Chyba udałoby się to ogarnąć najprościej tym pyautogui i wyszukiwaniem poprzez określony prostokąt na ekranie. Muszę tylko dowiedzieć się jakie dokładnie kordy ma miejsce każdego przycisku i wdrożyć to do kodu tak myślę :)

stivens
  • Rejestracja: dni
  • Ostatnio: dni
0

pyautogui afaik manewruje tylko myszka/klawiatura a informacje ma jedynie na podstawie screenshotow i ich interpretacji (lokalizacja bitmap itd.).
AutoIT dziala bardziej bezposrednio na innych aplikacjach.

R1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 149
0

Myślę że spokojnie uda się to zrobić sprawdzeniem czy przycisk jest wykryty w określonym prostokącie używając Twojego mądrego toku myślenia. Bardzo mi to pomoże bo w sumie mogę napisać skrypt który będzie wykrywał przyciski w dokładnie określonych miejscach na ekranie, a później zrobić drugą aplikację identyczną tyle że będzie mieć inne prostokąty z pozycją.

Nie wiem tylko teraz jak zaimplementować to btn.x i btn.y co to jest w ogóle :D

stivens
  • Rejestracja: dni
  • Ostatnio: dni
0

The return value is a 4-integer tuple: (left, top, width, height)

Kopiuj
class Button:
    def __init__(self, _tuple):
        self.x = _tuple[0]
        self.y = _tuple[1]

btn = Button( pyautogui.locateOnScreen('btn.png') )

(ponownie, kod generyczny - moze byc jakis fuckup)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.