Python Soucis If-else / library: keyboard

lano -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -

Bonjour,

Je pogramme en ce moment un autoclicker pour un site, seulement à certains moments il ne marche pas et j'aurais besoin de pouvoir l'arretez imédiatement. J'ai donc chercher une librairie me permettant de détecter une touche préssée puis d'arrêter le script après que la touche soit préssée. Mon probleme est que l'autoclicker d'apres ne marche pas : je ne peux qu'arretez le script.

 
from pynput.mouse import  Controller, Button
mouse = Controller()
from pynput.keyboard import  Key, Controller
Keyboard = Controller()
import time
import keyboard
def clic_droit(position_x,position_y):
    mouse.position = (position_x,position_y)
    mouse.press(Button.left)
    mouse.release(Button.left)
    time.sleep(0.5)

for n in range(10) :
    if keyboard.read_key() == "s":
            quit()
    else:
        clic_droit(1127, 123)

donc je pensais que lorsque j'appuierais pas sur "s" il réaliserait le clic, mais non rien à faire je ne peux qu'arrêter le script.

j'ai aussi esayer avec 

 
while 1 :

et

 
while True :

mais ca ne marche pas.


Windows / Chrome 110.0.0.0

3 réponses

  1. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
     

    En en modifiant un peu
     

    for n in range(10) :
        Key = keyboard.read_key()
        print(Key)
        if Key == "s":
            quit()
        else:
            clic_droit(1127, 123)

    ça affiche quoi ?


    0
    1. lano
       

      Le résultat est le même : je dois appuyer sur une autre touche pour le lancer et si je veux l'arreter avec s quand il est deja lancer le script ne se stoppe pas.

      La seule chose qui change est que ca print s dans mon terminal

      0
  2. lano
     

    J'ai compris quelque chose : quand j'appuie sur une autre touche que "s" l'autoclicker se met en marche. Je pense donc que le code veut dire : si c'est la touche s qui est préssée alors arreter, si c'est une autre touche qui est préssé alors commencer l'autocliker.

    Seulement je voudrais que la touche "s" soit un peu une securite au cas où je veux l'arreter pour ne pas qu'il fasse n'importe quoi. Et je ne veux surtout pas devoir appuyer sur une autre touche que "s" pour le lancer. Auriez vous une autre librairie a me proposer ?

    0
  3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     

    bonjour,

    et ainsi?

    for n in range(10) :
        if keyboard.is_pressed('s'):
                quit()
        else:
            clic_droit(1127, 123)
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      ou bien

      import time
      import keyboard
      def c():
          print('c')
          time.sleep(0.5)
      def q(e):
          global fini
          fini=True
      fini=False
      keyboard.on_press_key('s', q)
      for n in range(10) :
          if fini:
                  quit()
          else:
              c()
      
      0