Utilisation des bouton du clavier sur python (reupload)
ilyas
-
Phil_1857 Messages postés 1872 Date d'inscription Statut Membre Dernière intervention -
Phil_1857 Messages postés 1872 Date d'inscription Statut Membre Dernière intervention -
Bonjour,j'ai 10 ans et je fais du python
je voudrais savoir comment faire pour que quand je clique sur la touche espace ,le programme se ferme
voici mon code pour vous-aidez :
je voudrais savoir comment faire pour que quand je clique sur la touche espace ,le programme se ferme
voici mon code pour vous-aidez :
from turtle import * speed(0) shape('circle') bgcolor('white') color('orange') while True : circle(50) left(10)
A voir également:
- Python détecter touche clavier
- Télécharger clavier arabe - Télécharger - Divers Web & Internet
- Touche inser clavier - Guide
- Touche remanente windows - Guide
- Comment taper / sur clavier - Guide
- Touche verrouillage clavier - Guide
13 réponses
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
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
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
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
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
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 ?
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 ?
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 ...'
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:
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 ...