Fermeture fenêtre suivie de réouverture

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Hello,

J'ai une question par rapport à turtle. En effet, il arrive (quand j'utilise les événements jusqu'à présent) que lorsque je ferme la fenêtre elle se rouvre (et plante) si le traçage ou le coloriage qui était en cours n'était pas fini. Cela m'arrive avec le code ci-dessous : lorsque je déplace le point et que je ferme avant la prise en compte de tous les événements. Cela m'arrive aussi avec mon programme du jeu des allumettes (que je peux poster si besoin) lorsque je ferme alors que les allumettes sont en train d'être dessinées.

Même certains programmes de turtledemo souffrent du même problème (exemple : chaos), d'autres non. Je ne comprends pas pourquoi.

Merci pour votre aide !

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import turtle

'''Fonction pour se déplacer à un point sans tracer'''
def deplacer_sans_tracer(x, y = None):
    turtle.up()
    if x is tuple and len(x) == 2:
        turtle.goto(x)
    else:
        turtle.goto(x, y)
    turtle.down()

'''Fonction pour afficher seulement la balle'''
def affiche_point(diametre, couleur):
    deplacer_sans_tracer(pos_x, pos_y)
    turtle.clear()
    turtle.dot(diametre, couleur)

'''Fonction pour réinitialiser la balle'''
def move_reset():
    global pos_x, pos_y
    pos_x = pos_y = 0
    affiche_point(diametre_balle, couleur_balle)

'''Fonction pour changer la coordonnée x de la balle'''   
def move_x(num = 0):
    global pos_x
    pos_x += num
    affiche_point(diametre_balle, couleur_balle)

'''Fonction pour changer la coordonnée y de la balle'''
def move_y(num = 0):
    global pos_y
    pos_y += num
    affiche_point(diametre_balle, couleur_balle)

'''Boucle principale'''
if __name__ == "__main__":
    pos_x, pos_y = 0, 0
    diametre_balle, couleur_balle = 20, 'red'

    turtle.hideturtle()
    affiche_point(diametre_balle, couleur_balle)

    turtle.listen()
    turtle.onkeypress(lambda : move_x(-10), "Left")
    turtle.onkeypress(lambda : move_x(10), "Right")
    turtle.onkeypress(lambda : move_y(10), "Up")
    turtle.onkeypress(lambda : move_y(-10), "Down")
    turtle.onkeyrelease(move_reset, "space")
    turtle.mainloop()

Édité par Smokiev

Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte