Jump to content

Como identificar check box usando pyautogui


Helio Henrique H. D. Costa

Postagens Recomendadas

Bom Dia Pessoal,

Tudo bem?
Estou fazendo um programa, onde ele acessa o software do Windows abaixo:
C:/Windows/System32/lusrmgr.msc

Vai na pasta Usuários >>> vai no usuário support e marca a opção "Conta desativada" se o check box não estiver com nada marcado.
Até aí tudo bem, consegui fazer usando o "pyautogui".
O meu problema está sendo quando o check box "Conta desativada" já está marcadado, onde eu preciso fazer um if para não fazer nada e deixá-lo marcado.
Eu criei um else da seguinte forma:
pyautogui.press('b', presses=2)
Onde ele clica duas vezes desmarcando e marcando novamente, porém meu problema é que não estou conseguindo fazer ele identificar o check box Conta desativada para que ele realize esse procedimento duas vezes.
Segue meu código abaixo, onde o if funciona, já o else não. Alguém pode me ajudar? Agradeço desde já.

from os import startfile
import pyautogui as pya
import pywinauto as win
import time


startfile('C:/Windows/System32/lusrmgr.msc')
time.sleep(1)
pya.press('Down')
time.sleep(1)
pya.press('Tab')
time.sleep(1)
pya.hotkey('Shift', 's')
time.sleep(1)
pya.press('Enter')
time.sleep(1)
pya.press('Tab', presses=4)
time.sleep(1)
if win.get_toggle_state() == 0:
    pya.press('b')
else:
    pya.press('b', presses=2)
pya.press('Tab', presses=3)
pya.press('Enter')
time.sleep(1)
pya.press('Tab', presses=2)
pya.press('Enter')
time.sleep(1)
pya.hotkey('Alt', 'F4')

 

Link to comment
Compartilhe em outros sites

Olá @Helio Henrique H. D. Costa acredito que a única forma de verificar se essa checkbox esta marcada ou não é utilizando imagens, por exemplo você pode fazer um if com uma precisão maior no conf verificando a imagem do checkbox. Segue exemplo:

from os import startfile
import pyautogui as pya
import time
import os


# FUNÇÃO QUE LOCALIZA IMAGEM NA TELA
def find_img(img, pasta='imgs', conf=1):
    try:
        path = os.path.join(pasta, img)
        if conf != 1:
            return pya.locateCenterOnScreen(path, confidence=conf)
        else:
            return pya.locateCenterOnScreen(path)
    except:
        return False

# FUNÇÃO QUE CLICKA NA IMAGEM
def click_img(img, pasta='imgs', conf=1.0, delay=1, timeout=20, button='left', clicks=1):
    img = os.path.join(pasta, img)
    try:
        aux = 0
        while True:
            box = pya.locateCenterOnScreen(img, confidence=conf)
            if box:
                pya.click(pya.locateCenterOnScreen(img, confidence=conf), button=button, clicks=clicks)
                return True
            time.sleep(delay)
            if timeout < 0:
                continue
            if timeout == aux:
                break
            aux += 1
        else:
            return False
    except:
        return False

startfile('C:/Windows/System32/lusrmgr.msc')
time.sleep(1)
pya.press('Down')
time.sleep(1)
pya.press('Tab')
time.sleep(1)
pya.hotkey('Shift', 's')
time.sleep(1)
pya.press('Enter')
time.sleep(3)

# VERIFICA IMAGEM
if find_img('checkbox_desmarcada.png', conf=0.9):
    print('checkbox não marcada')
    pya.hotkey('Alt', 'v')
else:
    print('checkbox já marcada')

time.sleep(1)

pya.press('Tab', presses=3)
pya.press('Enter')
time.sleep(1)
pya.press('Tab', presses=2)
pya.press('Enter')
time.sleep(1)
pya.hotkey('Alt', 'F4')

Para funcionar é preciso você criar uma pasta chamada 'imgs' no mesmo diretorio que esta seu script .py

e colocar nessa pasta uma imagem recortada .png chamada 'checkbox_desmarcada'

Segue abaixo imagem de exemplo.

Assim o robô vai verificar se encontra essa imagem se ele encontrar quer dizer que a checkbox esta desmarcada ai ele vai apertar Alt + V e vai marca a checkbox, se ele não encontrar essa imagem quer dizer que a checkbox ja está marcada ai ele não faz nada so aperta no OK.

Vai parecer complexo para você acredito, mas não é, é bem simples, se conseguir entrar em contato comigo a noite te ensino tudo e explico como funciona.

image.png

 

 

 

Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...