Bonjour
J'ai fait un petit script qui m'affiche 10 balles dans un canvas et elles rebondissent joyeusement quelques secondes puis Xorg consomment de plus en plus de CPU et c'est beaucoup moins joyeux et plus lent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
#import tkinter, qui permet de gérer les fenêtres
from tkinter import *
#import math permet d'avoir accès aux fonctions cosinus et sinus
from math import *
import random
 
def mouvement():
	for j in range(10):
		bougez(les_balles[j])
	window.after(50,mouvement)
 
def clavier(event):
	window.destroy()
 
class Balle:
	def __init__(self,zone):
		self.x=random.randrange(10,largeur-10)
		self.y=random.randrange(10,hauteur-10)
		self.dx=random.randrange(1,10)
		self.dy=random.randrange(1,10)
		self.r=random.randrange(5,15)
		print("x=",self.x,"y=",self.y,"dx=",self.dx,"dy=",self.dy,"r=",self.r)
		zone.create_oval(self.x-self.r, self.y-self.r, self.x+self.r, self.y+self.r, outline='green', fill='green')
	def bouger(self,zone):
		zone.create_oval(self.x-self.r, self.y-self.r, self.x+self.r, self.y+self.r, outline='yellow', fill='yellow')
		if (((self.x+self.dx)>=(largeur-self.r)) or ((self.x+self.dx)<=self.r)):
			self.dx=-self.dx
		if (((self.y+self.dy)>=(hauteur-self.r)) or ((self.y+self.dy)<=self.r)):
			self.dy=-self.dy
		self.x=self.x+self.dx
		self.y=self.y+self.dy
		zone.create_oval(self.x-self.r, self.y-self.r, self.x+self.r, self.y+self.r, outline='green', fill='green')
 
def bougez(laballe):
	laballe.bouger(zone_dessin)
 
# On crée une fenêtre, racine (départ) de notre interface
window = Tk()
 
#taille de la fenetre
largeur=640
hauteur=480
#creation d'un canvas pour dessiner
zone_dessin = Canvas(window, width=largeur, height=hauteur, background='yellow')
#ma_balle1 = zone_dessin.create_oval(300, 220, 340, 260, outline='blue', fill='blue')
 
#capture la pression sur une touche pour fermer la fenetre
window.bind_all('<KeyPress>',clavier)
 
#on met le canvas dans l'interface
zone_dessin.pack()
 
#Ma liste mes_balles de balle
#d'abord rien
les_balles=[]
#on ajoute 10 balles
for i in range(10):
	les_balles.append(Balle(zone_dessin))
 
#on lance l'animation
mouvement()
 
# On démarre la boucle Tkinter qui s'interompt quand on ferme la fenêtre
# cette boucle permet d'attendre que l'utilisateur agisse dans la fenêtre
window.mainloop()
Si quelqu'un a une idée ?
Alors je cumule les problèmes : je débute en POO et en Python.