Utilisation des bouton du clavier sur python (reupload)
Fermé
ilyas
-
21 avril 2020 à 18:53
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 26 avril 2020 à 08:53
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 26 avril 2020 à 08:53
A voir également:
- Utilisation des bouton du clavier sur python (reupload)
- Notice d'utilisation - Guide
- Comment taper / sur clavier - Guide
- Telecharger clavier arabe تنزيل لوحة المفاتيح العربية - Télécharger - Divers Web & Internet
- Changer clavier qwerty en azerty - Guide
- Télécharger clavier arabe samsung - Télécharger - Bureautique
13 réponses
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 22 avril 2020 à 11:46
Modifié le 22 avril 2020 à 11:46
Bonjour Ilyas,
Moi, j'ajouterais un test dans la boucle pour détecter un appui de touche du clavier, pour cela, il faut importer la bibliothèque msvcrt
Juste après la ligne from turtle import * , j'ajouterais:
import msvcrt
et dans la boucle while, juste après left(10):
Moi, j'ajouterais un test dans la boucle pour détecter un appui de touche du clavier, pour cela, il faut importer la bibliothèque msvcrt
Juste après la ligne from turtle import * , j'ajouterais:
import msvcrt
et dans la boucle while, juste après left(10):
while True : circle(50) left(10) if(msvcrt.kbhit()): if(msvcrt.getch() == b' '): break
merci, mais pouvez vouz m'expliqué ces lignes :
normalement il devrait avoir un
if(msvcrt.kbhit()): if(msvcrt.getch() == b' '): break
normalement il devrait avoir un
else
en fait j'ai améliorer mon programme et il n'y a plus de boucle donc comment faire
voici le code (j'ai ajouter le modules que vous m'avez dis d'installer et les autres ligne qui convienne avec le module msvrt:
voici le code (j'ai ajouter le modules que vous m'avez dis d'installer et les autres ligne qui convienne avec le module msvrt:
from turtle import * import msvcrt speed(0) shape('circle') bgcolor('white') color('red') for count in range(40): circle(100) left(10) color('#FFBD00') for count in range(40): right(10) circle(100) color('yellow') for count in range(40): circle(100) left(10) color('green') for count in range(40): right(10) circle(100) color('lightblue') for count in range(40): circle(100) left(10) color('blue') for count in range(40): right(10) circle(100) color('violet') for count in range(40): circle(100) left(10) color('black') for count in range(40): right(10) circle(100) if(msvcrt.kbhit()): if(msvcrt.getch() == b'space'): break
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
22 avril 2020 à 12:00
22 avril 2020 à 12:00
non, pas de else
de plus je vois dans ta réponse que les 2 lignes sont alignées, normalement la 2eme est décalée de 2 espaces:
explication:
if(msvcrt.kbhit()): si on appui sur une touche du clavier pendant la boucle
if(msvcrt.getch() == b' '): break
et si la touche est un espace, alors break : on sort de la boucle while
On aurait même pu écrire:
Essaie pour voir si ca marche
de plus je vois dans ta réponse que les 2 lignes sont alignées, normalement la 2eme est décalée de 2 espaces:
if(msvcrt.kbhit()): if(msvcrt.getch() == b' '): break
explication:
if(msvcrt.kbhit()): si on appui sur une touche du clavier pendant la boucle
if(msvcrt.getch() == b' '): break
et si la touche est un espace, alors break : on sort de la boucle while
On aurait même pu écrire:
if(msvcrt.kbhit() and msvcrt.getch() == b' '): break
Essaie pour voir si ca marche
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
22 avril 2020 à 14:50
22 avril 2020 à 14:50
ah évidemment si tu as changé entre-temps ...
mais maintenant, à quoi sert d'appuyer sur espace ?
au lieu d'une boucle while infinie, tu as une boucle for qui s'arrête au bout de 40 tours
Mais bon si tu veux arrêter avant, tu peux laisser ça, mais je n'ai pas écrit
if(msvcrt.getch() == b'space'):
j'ai écrit
if(msvcrt.getch() == b' '):
mais maintenant, à quoi sert d'appuyer sur espace ?
au lieu d'une boucle while infinie, tu as une boucle for qui s'arrête au bout de 40 tours
Mais bon si tu veux arrêter avant, tu peux laisser ça, mais je n'ai pas écrit
if(msvcrt.getch() == b'space'):
j'ai écrit
if(msvcrt.getch() == b' '):
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
22 avril 2020 à 16:12
22 avril 2020 à 16:12
oui, remarque, 40 tours de boucle avec 2 instructions dedans, ca va très vite sur nos ordinateurs modernes !
a mon avis, on a à peine le temps d'appuyer sur 'espace'
Ca ne marche pas : tu as un message d'erreur, ou bien ca va jusqu'à la fin sans problèmes ?
Tu es sur Windows ?
Tu as bien mis un espace blanc entre les 2 signes ' ' qui suivent le b dans la ligne
if(msvcrt.getch() == b' '): ????
3 questions précises qui attendent 3 réponses précises ….. :-)
Mais sinon, moi, j'essaierai ça, déjà pour voir :
a mon avis, on a à peine le temps d'appuyer sur 'espace'
Ca ne marche pas : tu as un message d'erreur, ou bien ca va jusqu'à la fin sans problèmes ?
Tu es sur Windows ?
Tu as bien mis un espace blanc entre les 2 signes ' ' qui suivent le b dans la ligne
if(msvcrt.getch() == b' '): ????
3 questions précises qui attendent 3 réponses précises ….. :-)
Mais sinon, moi, j'essaierai ça, déjà pour voir :
while True : circle(50) left(10) if(msvcrt.kbhit() and msvcrt.getch() == b' '): break
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
22 avril 2020 à 16:42
22 avril 2020 à 16:42
ca marche pas …
et sans la ligne que je t'ai fait ajouter est ce que ca marche ?
C'est a dire que ca dessine un cercle de rayon 50 , puis pivote vers la gauche de 10 degrés,
et ainsi de suite ?
et sans la ligne que je t'ai fait ajouter est ce que ca marche ?
C'est a dire que ca dessine un cercle de rayon 50 , puis pivote vers la gauche de 10 degrés,
et ainsi de suite ?
testez mon code pour voir :
from turtle import * import msvcrt speed(0) shape('circle') bgcolor('white') color('red') for count in range(40): circle(100) left(10) color('#FFBD00') for count in range(40): right(10) circle(100) color('yellow') for count in range(40): circle(100) left(10) color('green') for count in range(40): right(10) circle(100) color('lightblue') for count in range(40): circle(100) left(10) color('blue') for count in range(40): right(10) circle(100) color('violet') for count in range(40): circle(100) left(10) color('black') for count in range(40): right(10) circle(100) if(msvcrt.kbhit() and msvcrt.getch() == b' '): break
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
22 avril 2020 à 16:46
22 avril 2020 à 16:46
Oui mais avant, répond a ma question ...... ;-)
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
22 avril 2020 à 17:00
22 avril 2020 à 17:00
ok, alors test no 2:
On s'abstrait de Turtle pour découper le problème : ce programme s'affiche sur une fenêtre "invite de commandes"
Chez moi ca donne ça et le défilement s'arrête bien quand on appuie sur la touche 'espace' du clavier :
Déjà, est-ce que ça, ca marche ?
On s'abstrait de Turtle pour découper le problème : ce programme s'affiche sur une fenêtre "invite de commandes"
import msvcrt while True: print('espace pour arreter') if(msvcrt.kbhit() and msvcrt.getch() == b' '): break input ('\nPresser Entrée ...')
Chez moi ca donne ça et le défilement s'arrête bien quand on appuie sur la touche 'espace' du clavier :
Déjà, est-ce que ça, ca marche ?
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
22 avril 2020 à 18:28
22 avril 2020 à 18:28
c'est bizarre, chez moi, ca pète le feu à la béquille !
la preuve: la copie d'écran que je t'ai affichée dans ma précédente réponse
et c'est un code tout simple
Ca ne marche pas, ok, mais ca fait quoi exactement ?
Evidemment, tu as mis import msvcrt au début ?
la preuve: la copie d'écran que je t'ai affichée dans ma précédente réponse
et c'est un code tout simple
Ca ne marche pas, ok, mais ca fait quoi exactement ?
Evidemment, tu as mis import msvcrt au début ?
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
24 avril 2020 à 20:03
24 avril 2020 à 20:03
Bizarre, bizarre
Je suis sur Windows 10 et Python 3.7.2
Voila mon programme complet, il n'y a rien de plus:
On affiche un 1er message: test arrêt défilement: ………...……..
Ensuite boucle infinie qui affiche 'espace pour arreter'
Donc, ça défile
Et quand on appuie sur la barre d'espace, ça s'arrête et on a le message:
'Vous venez d'appuyer sur la barre d'espace, presser Entrée ...'
Je suis sur Windows 10 et Python 3.7.2
Voila mon programme complet, il n'y a rien de plus:
# -*- coding:Latin-1 -*- import msvcrt input('\ntest arret défilement : appuyer sur entrée, et sur espace pour arreter') while True: print('espace pour arreter') if(msvcrt.kbhit() and msvcrt.getch() == b' '): break input ("\nVous venez d'appuyer sur la barre d'espace, presser Entrée ...")
On affiche un 1er message: test arrêt défilement: ………...……..
Ensuite boucle infinie qui affiche 'espace pour arreter'
Donc, ça défile
Et quand on appuie sur la barre d'espace, ça s'arrête et on a le message:
'Vous venez d'appuyer sur la barre d'espace, presser Entrée ...'
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 25 avril 2020 à 12:11
Modifié le 25 avril 2020 à 12:11
Bonjour Ilyas,
C'est bizarre !!!
Nous sommes sous Windows, moi, j'ai Python 3.7.2, toi 3.8
Tu as normalement fait un strict copier/coller du dernier code que j'ai envoyé, sans rien y changer, et en respectant bien les indentations (on est d'accord que le test if( est bien dans la boucle while, et pas en dehors, c'est à dire que le test est aligné avec le print qui est juste au dessus ?)
Tu lances le programme, tu appuie sur entrée comme l'indique le message pour démarrer le défilement
Ca défile
Tu appuie sur la barre d'espace en bas du clavier
Chez moi, ca arrête le défilement et ça affiche "vous venez d'appuyer …..
(La preuve : voir les photos ci-dessus)
Chez toi, ca ne fait rien: le défilement continue
Chez moi, ca marche
Chez toi, ca ne marche pas ... on ne voit pas pourquoi .....
Tu vas me dire: la seule différence est dans nos versions de Python, mais j'ai consulté la doc Python 3.8 et ces 2 méthodes sont toujours présentes:
C'est bizarre !!!
Nous sommes sous Windows, moi, j'ai Python 3.7.2, toi 3.8
Tu as normalement fait un strict copier/coller du dernier code que j'ai envoyé, sans rien y changer, et en respectant bien les indentations (on est d'accord que le test if( est bien dans la boucle while, et pas en dehors, c'est à dire que le test est aligné avec le print qui est juste au dessus ?)
Tu lances le programme, tu appuie sur entrée comme l'indique le message pour démarrer le défilement
Ca défile
Tu appuie sur la barre d'espace en bas du clavier
Chez moi, ca arrête le défilement et ça affiche "vous venez d'appuyer …..
(La preuve : voir les photos ci-dessus)
Chez toi, ca ne fait rien: le défilement continue
Chez moi, ca marche
Chez toi, ca ne marche pas ... on ne voit pas pourquoi .....
Tu vas me dire: la seule différence est dans nos versions de Python, mais j'ai consulté la doc Python 3.8 et ces 2 méthodes sont toujours présentes:
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
25 avril 2020 à 18:49
25 avril 2020 à 18:49
Ah !
En tout cas, ce qui est sur c'est que si tu voulait mettre ça dans ta boucle
for count in range(40):
Tu ne verrais rien: 40 tour de boucle c'est trop rapide, tu sort de la boucle avant d'avoir eu le
temps d'appuyer sur espace ...
En tout cas, ce qui est sur c'est que si tu voulait mettre ça dans ta boucle
for count in range(40):
Tu ne verrais rien: 40 tour de boucle c'est trop rapide, tu sort de la boucle avant d'avoir eu le
temps d'appuyer sur espace ...
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
26 avril 2020 à 08:53
26 avril 2020 à 08:53
Hello Ilyas,
Alors, là, je suis sec
Si tu as vraiment fait tout ce que je décris en détails dans mon message d'hier à 12h10,
je ne vois pas, et évidemment, n'ayant pas ton ordi sous les yeux, je ne peux pas analyser ce qui
s'y passe ...
Alors, là, je suis sec
Si tu as vraiment fait tout ce que je décris en détails dans mon message d'hier à 12h10,
je ne vois pas, et évidemment, n'ayant pas ton ordi sous les yeux, je ne peux pas analyser ce qui
s'y passe ...