Forum >> Principianti >> While button press...

Pagina: 1

Devo creare un ciclo while che si attiva se si tiene premuto il click sinistro



Ho provato così:



from pynput.mouse import Listener

import time

def on_click(x, y, button, pressed):

while pressed:

print("Press")


with Listener(on_click=on_click) as listener:


listener.join()



Ma il programma fa diventare inutilizzabile il mouse... qualche idea?

Grazie in anticipo


--- Ultima modifica di Nikappa_ in data 2018-12-09 09:51:28 ---

--- Ultima modifica di Nikappa_ in data 2018-12-09 09:51:53 ---

--- Ultima modifica di Nikappa_ in data 2018-12-09 09:52:31 ---
Ciao a te, prima di tutto ricordati di usare il tasto code quando metti del codice, altrimenti non si capisce se sbagli qualcosa nell'indentazione o meno.


Non ho idea di che libreria stai usando, ma ho visto sul sito ufficiale e l'esempio è simile a quello che fai anche tu (ma non del tutto uguale, guarda le differenze qui sotto). Per curiosità quindi la ho installata e con sommo piacere vedo che... funziona.

from pynput.mouse import Listener

def on_click(x, y, button, pressed):
    print('{0} at {1}'.format('Pressed' if pressed else 'Released', (x, y)))
    if not pressed:
        # Stop listener
        return False

# Collect events until released
with Listener(on_click=on_click) as listener:
    listener.join()

Il codice sopra è esattamente come l'ho copiato dal sito ufficiale, su Python 3.5.2@Linux funziona e se premo uno dei tasti del mouse restituisce (a seconda della posizione in cui mi trovo):
Pressed at (1374, 832)
Released at (1374, 832)


Cya
Grazie mille della risposta, e mi scuso se non ho da subito detto il mio intento:



Sto creando un programma che clicca da solo, ma si deve attivare solo quando l'utente tiene premuto il click sinistro, quindi ho pensato appunto di prendere il codice che hai visto pure tu e farlo diventare un ciclo while... questo però (Come ho detto prima) non è possibile poiché il programma fa laggare il cursore fino a renderlo inutilizzabile...




from pynput.mouse import Listener

def on_click(x, y, button, pressed):
    while pressed:
        print("a") #Scrive all'infinito "a" anche se non viene premuto il click e non capisco il perchè

# Collect events until released
with Listener(on_click=on_click) as listener:
    listener.join()




Sto creando un programma che clicca da solo, ma si deve attivare solo quando l'utente tiene premuto il click sinistro, quindi ho pensato appunto di prendere il codice che hai visto pure tu e farlo diventare un ciclo while... questo però (Come ho detto prima) non è possibile poiché il programma fa laggare il cursore fino a renderlo inutilizzabile...
Segui il mio codice, vedrai che funziona. :ok:



Pagina: 1



Esegui il login per scrivere una risposta.