Como faço criar um loop para escrever um nome (em numeral), a cada loop _ pyautogui

741 views
Skip to first unread message

Elisangela Romão Mascarenhas

unread,
Dec 21, 2021, 8:28:08 AM12/21/21
to Python Brasil
Oi, galerinha!!
Estou aprendendo pelo youtube a automatizar minhas tarefas usando o pyautogui.
Mas não sou programadora, estou aprendendo. Minha formação é na área de comunicação e trabalho com marketing.
Eu fiz um script usando o pyautogui e funcionou 90%. Porque ainda não sei como trabalhar com loops e variáveis.
Preciso criar um loop para escrever um nome (em numeral), a cada loop.
Diferente do anterior, de 001 a 545 e finalizando o script (loop).
Eu coloquei o script do bot no github:
https://github.com/elisaromas/inkscapebot
Alguém poderia me ajudar?
Agradeço!

# Script para gerar um arquivo PDF de cada página de um Ebook (PDF).


#inportando a biblioteca pyautogui para leitura de tela, screenshot e pixels
import pyautogui  
#inportando a biblioteca time para usar sleep após um clique no alvo
import time  
#inportando a biblioteca keyboard para verificar qual tecla está apertada para parar o loop
import keyboard  
#inportando api do windows para realizar click de forma mais rápida e eficaz.
#import win32api ,win32con  #pip install pypiwin32


#pyautogui.PAUSE = 2   #a cada 2 segundos executa o comando
#while True:
while keyboard.is_pressed('c')==False:  # Aperte a Tecla 'c' para parar a execução do script

#    pyautogui.alert ('O código está sendo executado. Não mexa no Computdor!') # Exibe caixa de alerta ao executar o script
    pyautogui.PAUSE = 0.5  # pausa de meio segundo a cada ação (comando)
        #Abrir inkscape
    pyautogui.press ('winleft') # pressione a tecla do windows 'winleft'
    pyautogui.write ('inkscape')  # escreva 'inkscape'
    pyautogui.press ('enter')  # pressione a tecla 'enter'
    time.sleep (20) # espere 20 segundos
        #Abrir Documento
    pyautogui.moveTo (x=40, y=58)  # mouse é movido para a coordenada correspondente
    pyautogui.click (x=40, y=58)  # click do mouse no botão do menu para Abrir Documento
    time.sleep (4) # espere 4 segundos
        #Clicar no arquivo pra abrir
    pyautogui.moveTo (x=365, y=149)  # mouse é movido para a coordenada correspondente
    pyautogui.doubleClick (365,149) # click do mouse no arquivo do Ebook pra abrir
    time.sleep (2) # espere 2 segundos
        #Configuração de importação de PDF
    pyautogui.moveTo (x=516, y=262) # mouse é movido para a coordenada correspondente
    pyautogui.click (x=516, y=262) # click do mouse em 'Importacao Poppler/Cairo'
    time.sleep (2) # espere 2 segundos
        #Selecionar pagina
    pyautogui.moveTo (x=640, y=173) # mouse é movido para a coordenada correspondente
    pyautogui.doubleClick (x=640, y=173) # click do mouse em Selecionar a pagina
    pyautogui.write ('005') # escrevendo o número da página do ebook. (a cada loop do script é ecrito o número da pagina correspondente do PDF, sendo que o pdf tem 545 paginas)
    time.sleep (10) # espere 10 segundos
        #Clicar em OK
    pyautogui.moveTo (x=1021, y=591) # mouse é movido para a coordenada correspondente
    pyautogui.click (x=1021, y=591)  # click the mouse em 'Ok'
    time.sleep (7) # espere 7 segundos
        #Clicar no menu em Arquivo
    pyautogui.moveTo (x=26, y=35) # mouse é movido para a coordenada correspondente
    pyautogui.click (x=26, y=35)  # click do mouse no menu em Arquivo
    time.sleep (3) # espere 3 segundos
        #Clicar em SalvarComo
    pyautogui.moveTo (x=80, y=200) # mouse é movido para a coordenada correspondente
    pyautogui.click (x=80, y=200)  # click do mouse em SalvarComo
    time.sleep (3) # espere 3 segundos
        #Abrir a pasta ichingPaginasParaEditar
    pyautogui.moveTo (x=283, y=146) # mouse é movido para a coordenada correspondente
    pyautogui.doubleClick (x=283, y=146)   # click do mouse na pasta 'ichingPaginasParaEditar'
    time.sleep (3) # espere 3 segundos
        #Clicar em Tipo *de arquivo*
    pyautogui.moveTo (x=317, y=612) # mouse é movido para a coordenada correspondente
    pyautogui.click (x=317, y=612)   # click do mouse em Tipo *de arquivo*
    time.sleep (3) # espere 3 segundos
        #Clicar em *PDF*
    pyautogui.moveTo (x=296, y=542) # mouse é movido para a coordenada correspondente
    pyautogui.click (x=296, y=542) # click do mouse na guia do 'Formato de Documento Portatil' (PDF)
    time.sleep (3) # espere 3 segundos
        #Renomear o arquivo *PDF
    pyautogui.moveTo (x=291, y=583) # mouse é movido para a coordenada correspondente
    pyautogui.click (x=291, y=583) # click do mouse no campo para digitar o nome do arquivo
    time.sleep (3) # espere 3 segundos
    pyautogui.write ('005') # escrevendo nome do arquivo (cada nome deverá ter como nome o número da pagina correspondente do PDF, sendo que o pdf tem 545 paginas)
    time.sleep (3) # espere 3 segundos
        #Salvar
    pyautogui.moveTo (x=1240, y=586) # mouse é movido para a coordenada correspondente
    pyautogui.click (x=1240, y=586) # click do mouse no botão Salvar
    time.sleep (4) # espere 4 segundos
        #Formato de Documento Portátil
    pyautogui.click('BTNOK.png') # Print do botão 'Ok' para ser clicado pelo pyautogui
    time.sleep (3) # espere 3 segundos
        #Fechar o inkscape
    pyautogui.moveTo (x=1338, y=8) # mouse é movido para a coordenada correspondente
    pyautogui.click (x=1338, y=8) # click do mouse no botão de fechar no canto superior direito
        #Fechar sem Salvar
    pyautogui.moveTo (x=510, y=422) # mouse é movido para a coordenada correspondente
    pyautogui.click (x=510, y=422) # click do mouse na janela em Fechar sem Salvar
        #Observação o inkscape é fechado sem salvar o arquivo porque o propósito é apenas gerar um aquivo '.pdf' de cada página para uma outra edição automática posterior em outro bot.
        #após a finalização de todas as páginas, outro bot irá editar cada página, e fazer o tratamento de design, usando diversos programas de editoração em sequencias e ordens.
        #programas de editoração: gimp, scribus.
        

Sergio Garcia

unread,
Dec 22, 2021, 6:20:08 PM12/22/21
to python...@googlegroups.com
Oi Elisangela, tudo bom?

Para o loop, você pode olhar essas duas sessões do tutorial.


Pra você que está começando, uma boa dica para aprender tudo o que o Python oferece é o tutorial da própria linguagem:

A ambiente de tecnologia pode parecer pouco acolhedor de inicio, especialmente com mulheres, há boas iniciativas que tentam mudar isso, recomendo acompanhar as PyLadies (https://brasil.pyladies.com/) e o Django Girls (https://djangogirls.org/)




--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/c4c02dfa-6a29-46a1-8981-5032199cbbb4n%40googlegroups.com.

Elisangela Romão Mascarenhas

unread,
Dec 23, 2021, 8:22:48 PM12/23/21
to python...@googlegroups.com
O Sergio! Obrigada pelas dicas! Sim, sou iniciante em python. Não sou programadora, minha formação é em comunicação e marketing, eu recorri a tutoriais rápidos no youtube, porque meu trabalho é muito repetitivo e cansativo. Além de cuidar das tarefas de casa, das crianças e o trabalho que tenho toma muito meu tempo. Eu tenho uma rotina de fazer a mesma coisa no computador todos os dias. Eu só queria uma ajuda pra fazer a troca do nome em um loop. Pra evitar dores da tendinite. Se você souber, ficaria muito grata! Deus te abençoe! Um feliz Natal pra você!


Marcelo Valle

unread,
Dec 31, 2021, 10:35:08 AM12/31/21
to Python Brasil
Elizangela, 

Um loop serve para repetir o mesmo comando várias vezes, mudando pouca coisa toda vez que você repete o comando. 
Por exemplo, imprimir a tabuada do 1 ao 10 é algo que envolve loops: você imprime uma tabuada toda vez, só muda o número.
No seu caso, não está claro pra mim quais linhas no link https://github.com/elisaromas/inkscapebot/blob/main/ichingBot.py que você quer repetir várias vezes. 

Abracos,
Marcelo.

--

Elisangela Romão Mascarenhas

unread,
Jan 2, 2022, 6:06:26 PM1/2/22
to python...@googlegroups.com

Oi Marcelo,
Não sou programadora de formação, sou uma entusiasta e acompanho um pouco a área de programação estudando python, ainda não sei usar os termos adequadamente, pra mim a definição de "Loop" é exatamente isso que você disse. Mas quando eu executo o script que eu fiz no pyautogui, ele fica em Loop até que eu pare a execução, é isso que eu quis dizer, a execução de todo o script fica em loop, desculpe se me expressei mal. Mas é isso! A execução fica em loop até que eu pare ela. 

Na linha nº40 
pyautogui.write ('005') # escrevendo o número da página do ebook. (a cada loop do script é escrito o número da pagina correspondente do PDF, sendo que o pdf tem 545 paginas)

Na linha nº70 
pyautogui.write ('005') # escrevendo nome do arquivo (Repete o processo da linha "40", onde cada nome deverá ter como nome o número da pagina correspondente do PDF, sendo que o pdf tem 545 paginas)

Eu só preciso gerenciar esse Loop, sendo que a cada Loop seja alterado o nome escrito no pyautogui. 
Ainda não sei como fazer isso, se você souber agradeço! 











Marcelo Valle

unread,
Jan 2, 2022, 6:34:07 PM1/2/22
to Python Brasil
Elisangela, 

Se eu entendi bem o que  você  quer,  você  poderia substituir a linha 16 `while keyboard.is_pressed('c')==False:` por isso:

```
for numero_pagina in range(545):  # Executa os comandos dentro 545 vezes, 1 vez para cada página
``` 

Ou seja, hoje você já tem um loop do tipo `while` que executa até que você pare, ao invés disso você apenas executaria 545 vezes, de forma fixa. 

Na linha 70 `pyautogui.write ('005')` você poderia substituir por

```
pyautogui.write (f"{numero_pagina:03d}")
```

para que o número do arquivo seja o  número  da página, mas formatado com no mínimo 3 dígitos, completando com zeros a esquerda. 

Espero ter ajudado.

Abracos,
Marcelo.


Elisangela Romão Mascarenhas

unread,
Jan 3, 2022, 6:44:28 PM1/3/22
to python...@googlegroups.com
Oi Marcelo! 
Funcionou! 
Estou maravilhada!
É lindo ver funcionando, muito obrigada!

Marcelo Valle

unread,
Jan 3, 2022, 6:49:01 PM1/3/22
to Python Brasil
Começa assim.... rsrsrs
Daqui um tempo você estará respondendo questões parecidas aqui na lista ;-) 
Boa diversão!



Elisangela Romão Mascarenhas

unread,
Jan 4, 2022, 5:46:36 PM1/4/22
to python...@googlegroups.com
Ah sim! Espero um dia ter capacidade de ensinar. A minha motivação é incentivar meu filho de 9 anos. Ele usa o scratch no computador. Fico admirada!!

Reply all
Reply to author
Forward
0 new messages