Jump to content

Usar Pyautogui e o pc ao mesmo tempo


electric
Go to solution Solved by Cerzedelo,

Recommended Posts

Bom dia,

Em primeiro fico feliz por saber que esta comunidade ainda esta ativa, estive afastado da programação durante uns anos mas agora que voltei e vejo que ainda estamos aqui ativo fiquei bem feliz parabens.

 

Passando a duvida, estou a aprender python, por diversão, e descobri que posso dar clicks em em imagens especificas usando o pyautogui, perfeito e funciona, a minha grande duvida é:

Existe alguma forma de eu estar a usar a minha maquina ( teclado e rato ) e usar o pyautogui ao mesmo tempo ? como que dar os clicks ou escrever sem "usar" o meu rato ou teclado ?

 

Forte abraça

 

PS: acredito que possa ter colocado aqui a duvida se nao for peço desculpa e peço que me digam onde.

Link to comment
Share on other sites

Em 27/08/2022 às 10:08, electric disse:

Bom dia,

Em primeiro fico feliz por saber que esta comunidade ainda esta ativa, estive afastado da programação durante uns anos mas agora que voltei e vejo que ainda estamos aqui ativo fiquei bem feliz parabens.

 

Passando a duvida, estou a aprender python, por diversão, e descobri que posso dar clicks em em imagens especificas usando o pyautogui, perfeito e funciona, a minha grande duvida é:

Existe alguma forma de eu estar a usar a minha maquina ( teclado e rato ) e usar o pyautogui ao mesmo tempo ? como que dar os clicks ou escrever sem "usar" o meu rato ou teclado ?

 

Forte abraça

 

PS: acredito que possa ter colocado aqui a duvida se nao for peço desculpa e peço que me digam onde.

Não é possível usar  o pyautogui e o seu computador em simultâneo dado que por exemplo não é possível clicar em dois elementos em diferentes posições na tela ao mesmo tempo. Isto é, se durante a execução do pyautogui mexer no mouse ou no teclado o programa não vai executar correctamente.

Para dar um click com o mouse basta utilizar a função pyautogui.click(), se pretender um duplo click utiliza o pyautogui.doubleclick(). A questão é que para o pyautogui saber onde vai clicar tem de lhe indicar o local através das coordenadas da sua tela. Para isso utiliza a função pyautogui.position() que lhe vai mostrar quais são as coordenadas x e y do elemento que pretende clicar.

Quanto a usar o teclado pode usar as funções pyautogui.press(),pyautogui.keypress(), pyautogui.keyup(), pyautogui.keydown() e o pyautogui.write() que escreve um texto.

Veja o seguinte exemplo que procura e abre o firefox, e na barra de pesquisa do firefox escreve e abre a página do google.com, na barra de pesquisa do google escreve pyautogui e clica no primeiro link que aparece indo para a página da documentação do pyautogui.

import pyautogui
pyautogui.PAUSE=1 # dá uma pausa de 1 segundo entre os procedimentos seguintes, é importante na medida em que o computador pode demorar algum tempo a abrir as páginas
pyautogui.press('win') # clica na tecla win
pyautogui.write('firefox') #na barra de pesquisa escreve firefox, se tiver o firefox instalado e for o chrome troque por chrome
pyautogui.press('enter') # prime a tecla enter
pyautogui.press('backspace') # este é um promenor para abrir a pagina do browser
pyautogui.press('shift') # seleciona a barra de pesquisa do browser
pyautogui.write('google.com') # escreve na barra de pesquisa google.com
pyautogui.press("enter") # prime a tecla enter
pyautogui.write("pyautogui") #escreve na barra de pesquisa do ggogle a palavra pyautogui
pyautogui.press("enter") # prime a tecla enter
pyautogui.click(x=319, y=329) #clica no primeiro link que aparece da pesquisa que é a documentação do pyautogui

Como referi o pyautogui.PAUSE é importante porque indica que o programa espera 1 segundo (pode alterar o tempo) entre as diversas operações, pois se o programa correr mais rápido de que o computador demorar, neste exemplo, a abrir a página do google.com, já não consegue executar os comandos seguintes.

Para obter as coordenadas x e y a utilizar no pyautogui.click(), deve utilizar a função pyautogui.position(), mas para isso convérm utilizar um time sleep, para por o programa numa espécie de "pausa", para você minimizar o editor de código, e colocar o ponteiro do mouse, sobre o elemento que pretende clicar.

import pyautogui
import time
  
time.sleep(5)
  
pyautogui.position()

Quando terminar a execução passado 5 segundos deste script aparece a informação Point(x=319, y=329), que corresponde as coordenadas onde estava o ponteiro do mouse, neste exemplo está sobre o primeiro link que aparece na pesquisa pyautogui na página do google.com

Edited by Cerzedelo
  • Vote 1
Link to comment
Share on other sites

Muito obrigado Cerzedelo, foi uma boa explicação sem duvida que acabei por tirar ainda mais duvidas 🙂
Eu estou a usar ( não sei se é melhor ou não ) click na imagem 
Exemplo:
 

x, y= pyautogui.locateCenterOnScreen("IMAGENS\123.png", confidence = 0.5)

O grande problema é que realmente preciso de algo que me permita poder estar a usar a maquina e processar o script,
Ainda pensei e se calhar será a melhor hipótese, ter uma VM a correr com o script em simultâneo, não deixa de ser ambientes diferentes logo não interfere...
Sei que em algumas programações ( lendo muito por ai ) consegue-se fazer o focus numa aplicação e usar apenas o código nessa aplicação, isso não é aplicável em python ?

Mais uma vez obrigado, um abraço

Link to comment
Share on other sites

14 horas atrás, electric disse:

Muito obrigado Cerzedelo, foi uma boa explicação sem duvida que acabei por tirar ainda mais duvidas 🙂
Eu estou a usar ( não sei se é melhor ou não ) click na imagem 
Exemplo:
 

x, y= pyautogui.locateCenterOnScreen("IMAGENS\123.png", confidence = 0.5)

O grande problema é que realmente preciso de algo que me permita poder estar a usar a maquina e processar o script,
Ainda pensei e se calhar será a melhor hipótese, ter uma VM a correr com o script em simultâneo, não deixa de ser ambientes diferentes logo não interfere...
Sei que em algumas programações ( lendo muito por ai ) consegue-se fazer o focus numa aplicação e usar apenas o código nessa aplicação, isso não é aplicável em python ?

Mais uma vez obrigado, um abraço

O problema não é a aplicação em python correr em background, a questão é que o pyautogui na sua concecpção se baseia em procura de imagens e não em texto, o que implica que quando estiver a correr, a tela que é considerada é aquela que está activa e não por exemplo uma tela que esteja minimizada.

Uma eventual solução é aquele que apresenta de utilizar uma máquina virtual.

Se usar o sistema operacional windows existe uma alternativa que é o pywinauto, que já opera em modo texto e não baseado em imagens.

Link to comment
Share on other sites

On 8/30/2022 at 1:10 PM, Cerzedelo said:

O problema não é a aplicação em python correr em background, a questão é que o pyautogui na sua concecpção se baseia em procura de imagens e não em texto, o que implica que quando estiver a correr, a tela que é considerada é aquela que está activa e não por exemplo uma tela que esteja minimizada.

Uma eventual solução é aquele que apresenta de utilizar uma máquina virtual.

Se usar o sistema operacional windows existe uma alternativa que é o pywinauto, que já opera em modo texto e não baseado em imagens.

Boa tarde Cerzelo desculpe a demora tardia na resposta, tenho estado um pouco ocupado para este meu hobby, bem vou começar a investigar isso, pois será uma questão que eu iria fazer, pois eu percebo um pouco de VB.Net e acredito que esta a morrer cada vez mais ( como disse posso estar enganado pois não ando neste mundo a algum tempo )
No entanto caso exista alguma maneira de conseguir usar em simultâneo nem que seja com outra linguagem, terei que me adaptar e começar a estudar essa mesma linguagem 😉, estou aberto a tudo neste momento.
Obrigado

Link to comment
Share on other sites

  • Solution
4 horas atrás, electric disse:

Boa tarde Cerzelo desculpe a demora tardia na resposta, tenho estado um pouco ocupado para este meu hobby, bem vou começar a investigar isso, pois será uma questão que eu iria fazer, pois eu percebo um pouco de VB.Net e acredito que esta a morrer cada vez mais ( como disse posso estar enganado pois não ando neste mundo a algum tempo )
No entanto caso exista alguma maneira de conseguir usar em simultâneo nem que seja com outra linguagem, terei que me adaptar e começar a estudar essa mesma linguagem 😉, estou aberto a tudo neste momento.
Obrigado

Não é que o VB.net esteja a morrer, a questão é que neste momento o python, digamos está na moda, e tem uma lista de bibliotecas enorme, que lhe permite criar os mais diversos tipos de programas, aliado a uma sintaxe relativamente simples e integração com todos os sistemas operativos e web, enquanto o VB.net só se aplica aos sistemas operativos windows.

Aliás muita da popularidade do python reside na sua aplicação na ciência de dados, machine learning e inteligência artificial.

Quanto ao pyautogui, neste momento existe essa limitação, contudo no seu roadmap eles apontam como recursos planeados para versões futuras:

- Find a list of all windows and their captions.

- Make it easier to work on systems with multiple monitors.

O problema é que não sabemos quando é que estas funcionalidade irão ser implementadas e se irão suprir esta necessidade.

O exemplo que lhe forneci anteriormente essencialmente usa os recursos web. Neste caso o pyautogui não é o mais indicado, mas sim o selenium ou o playwright.

Ou seja para criar um bot que vá operar o seu computador utiliza o pyautogui, se quiser usar um bot que vai operar na internet aí usa o selenium que opera através do css ou do xpath da pagina, pode operar em background, ou até em modo headless. Infelizmente por enquanto o pyautogui não parece operar da mesma forma. Há quem utilize algumas artimanhas como utilizar maquinas virtuais ou mesmo adicionando 2 teclados e dois ratos ao computador e depois usar o multiplex. No entanto neste processo não é garantido que a pyautogui funcione.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.