Tkinter
Fermé
Romain
-
Modifié le 6 sept. 2021 à 16:34
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 6 sept. 2021 à 21:14
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 6 sept. 2021 à 21:14
7 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 6 sept. 2021 à 16:41
Modifié le 6 sept. 2021 à 16:41
Pas du tout, tu crée une boule à x70 y70 et ensuite tu modifie PosX1, mais ça n'agit pas sur la boule déjà créée
mainloop() est la boucle qui attend les évènements de la fenêtre, c'est ce qui fait que le programme ne s'arrête pas après l'instruction start() et que la fenêtre reste affichée,
au contraire d'un programme qui s'exécuterai en mode console, par exemple, et dont on sort après la dernière instruction
cette boucle attend des évènements comme un clic sur un bouton, ou un clic sur quelque chose sur le Canvas, ou que l'on entre une valeur dans une Entry box, ou que l'on ferme la fenêtre, etc ...
Google est ton ami, à toi de trouver comment déplacer la boule .... :-)
(il y a une méthode pour modifier les coordonnées d'un objet)
mainloop() est la boucle qui attend les évènements de la fenêtre, c'est ce qui fait que le programme ne s'arrête pas après l'instruction start() et que la fenêtre reste affichée,
au contraire d'un programme qui s'exécuterai en mode console, par exemple, et dont on sort après la dernière instruction
cette boucle attend des évènements comme un clic sur un bouton, ou un clic sur quelque chose sur le Canvas, ou que l'on entre une valeur dans une Entry box, ou que l'on ferme la fenêtre, etc ...
Google est ton ami, à toi de trouver comment déplacer la boule .... :-)
(il y a une méthode pour modifier les coordonnées d'un objet)
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
Ambassadeur
1 568
5 sept. 2021 à 18:20
5 sept. 2021 à 18:20
bonjour,
peux-tu utiliser les balises de code pour poster ton code?
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
je ne vois rien dans ton programme qui "déplace" la boule.
peux-tu utiliser les balises de code pour poster ton code?
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
je ne vois rien dans ton programme qui "déplace" la boule.
En faite je pense, mais c'est surement pas comme ca qu'il faut faire, que le 'start' incremente indefiniment la valeur de PosX1 et donc que ca déplace progressivement la boule.
from tkinter import * PosX1 = 70 PosY1 = 70 def start(): global PosX1 PosX1 += 1 fenetre = Tk() canvas = Canvas(fenetre, width=700, height=500, background='white') ligne1 = canvas.create_line(30, 30, 30, 470) ligne2_1 = canvas.create_line(30, 30, 320, 30) ligne2_2 = canvas.create_line(380, 30, 670, 30) ligne3 = canvas.create_line(670, 30, 670, 470) ligne4 = canvas.create_line(30, 470, 670, 470) boule1 = canvas.create_oval(PosX1, PosY1, PosX1+20, PosY1+20, fill='black') canvas.pack() start() fenetre.mainloop()
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
1 568
5 sept. 2021 à 20:57
5 sept. 2021 à 20:57
est-ce ton premier exercice en python?
ajoute un print() dans start(), pour comprendre ce qui se passe.
commence peut-être par des exercices plus simples, sans tkinter, pour comprendre comment se comporte un programme que tu écris.
ajoute un print() dans start(), pour comprendre ce qui se passe.
commence peut-être par des exercices plus simples, sans tkinter, pour comprendre comment se comporte un programme que tu écris.
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 6 sept. 2021 à 10:02
Modifié le 6 sept. 2021 à 10:02
Bonjour,
Effectivement, tu débute vraiment en programmation (tkinter ou pas)
Dans ton code, tu défini une fenêtre, tu y crée un Canvas pour pouvoir y dessiner des lignes et un cercle rempli en noir
Ensuite tu appelles une fonction start() qui incrémente la valeur de PosX1
Et c'est tout !
Ce n'est pas de la magie: le fait de changer cette variable ne va pas déplacer le cercle
Comme le dit yg_be: "je ne vois rien dans ton programme qui "déplace" la boule."
Effectivement, tu débute vraiment en programmation (tkinter ou pas)
Dans ton code, tu défini une fenêtre, tu y crée un Canvas pour pouvoir y dessiner des lignes et un cercle rempli en noir
Ensuite tu appelles une fonction start() qui incrémente la valeur de PosX1
Et c'est tout !
Ce n'est pas de la magie: le fait de changer cette variable ne va pas déplacer le cercle
Comme le dit yg_be: "je ne vois rien dans ton programme qui "déplace" la boule."
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oui mais la boule dans la fenetre est créer en fonction de la variable PosX1 le fait d'incrémenter cette variable ne devrait pas créer a chaque fois une nouvelle boule légère décalé et donner l'impression qu'elle se déplace ?
L'instruction fenetre.mainloop() ne permet-elle pas de remonter a la ligne fenetre = Tk() ?
L'instruction fenetre.mainloop() ne permet-elle pas de remonter a la ligne fenetre = Tk() ?
D'accord, le problème venait du fait que je pensais que mainloop permettait d'exécuter de nouveau toutes les lignes de code. Je vais me renseigner pour trouver.
Merci beaucoup
Merci beaucoup
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 6 sept. 2021 à 21:15
Modifié le 6 sept. 2021 à 21:15
OK, mais réfléchis quand même à ce qui se passe:
même en rejouant une fois tout le code, on redessinerait une 2eme boule noire 1 pixel plus loin
en X sans effacer la 1ere ...
On se retrouverait donc avec 2 boules mais pas de mouvement
même en rejouant une fois tout le code, on redessinerait une 2eme boule noire 1 pixel plus loin
en X sans effacer la 1ere ...
On se retrouverait donc avec 2 boules mais pas de mouvement