Tkinter librairie python compatible MAC ?

frankladen

Membre confirmé
17 Octobre 2008
76
0
32
Trois-Rivières, Québec
Bonjour !

J'ai comme projet pour mon cours de gestion de projet de faire un jeu de redsquare :
http://kabubble.com/ga_red_square.htm

le professeur nous donné un code sur lequel se basé pour faire le reste de notre projet.

Bloc de code:
# -*- coding: iso-8859-1 -*-
from Tkinter import *

import math
import random

class Helper(object):
    """ cette classe est utilisé de facon statique sans creer d'objet"""
    def getAngledPoint(angle,longueur,cx,cy):
        """ angle est en radians"""
        x = (math.cos(angle)*longueur)+cx
        y = (math.sin(angle)*longueur)+cy
        return (x,y)
    getAngledPoint = staticmethod(getAngledPoint)
    
    def calcAngle(x1,y1,x2,y2):
         dx = x2-x1
         dy = y2-y1
         angle = (math.atan2(dy,dx) )
         return angle
    calcAngle = staticmethod(calcAngle)
    
    def calcDistance(x1,y1,x2,y2):
         dx = abs(x2-x1)**2
         dy = abs(y2-y1)**2
         distance=math.sqrt(dx+dy)
         return distance
    calcDistance = staticmethod(calcDistance)
    
# MODELE
class Carrerouge():
    def __init__(self,parent):
        self.parent=parent
        self.pos=[self.parent.taille/2,self.parent.taille/2]
class Bloqueur():
    def __init__(self,pos):
        self.pos=pos
        
class AiredejeuCarre():
    def __init__(self,taille):
        x=taille/10
        self.pos1=[x,x]
        self.pos2=[taille-x,taille-x]
        
class AiredejeuBloqueur():
    def __init__(self,taille):
        self.taille=[taille,taille]
        
class Partie():
    def __init__(self,parent,taille=100,nbrbloqueurs=4):
        self.parent=parent
        self.taille=taille
        self.carre=Carrerouge(self)
        self.bloqueurs=[]
        self.airedejeuCarre=AiredejeuCarre(self.taille)
        self.airedejeuBloqueurs=AiredejeuBloqueur(self.taille)
        self.debut=0
        self.nbrBloqueurs=nbrbloqueurs
        self.creeBloqueurs()
        
    def avertiClic(self,x,y):
        self.carre.pos=[x,y]
        
    def creeBloqueurs(self):
        d=360/self.nbrBloqueurs
        deplace=36
        posx=self.carre.pos[0]
        posy=self.carre.pos[1]
        for i in range(self.nbrBloqueurs):
            x,y=Helper.getAngledPoint(math.radians((d*i)+deplace), 100, posx, posy)
            print x,y
            self.bloqueurs.append(Bloqueur((x,y)))
#CONTROLEUR
class Controleur():
    def __init__(self):
        self.partie=Partie(self,400)
        self.vue=Vue(self,400)
        self.vue.dessinePartie(self.partie)
        self.vue.root.mainloop() 
           
    def avertiClic(self,x,y):
        self.partie.avertiClic(x,y)
        self.vue.dessinePartie(self.partie)

# VUE    
class Vue:
    def __init__(self,parent,taille=400):
        self.parent=parent
        self.root=Tk()
        self.taille=taille
        self.airedejeu=Canvas(self.root,width=taille,height=taille,bg="black")
        self.airedejeu.bind("<Button>",self.avertiClic)
        self.msg=Label(self.root,text="Rien à dire")
        self.msg.pack()
        self.airedejeu.pack()
        
    def avertiClic(self,eve):
        self.parent.avertiClic(eve.x,eve.y)
        
    def dessinePartie(self,partie):
        x=self.taille/10
        fract=x/2
        self.airedejeu.create_rectangle(partie.airedejeuCarre.pos1[0],
                                        partie.airedejeuCarre.pos1[1],
                                        partie.airedejeuCarre.pos2[0],
                                        partie.airedejeuCarre.pos2[1],
                                        fill="white",tags=("aire",))
        
        
        self.airedejeu.create_rectangle(partie.carre.pos[0]-fract,
                                        partie.carre.pos[1]-fract,
                                        partie.carre.pos[0]+fract,
                                        partie.carre.pos[1]+fract,
                                        fill="red",tags=("carre",))
        
        for i in partie.bloqueurs:
            self.airedejeu.create_rectangle(i.pos[0]-fract,
                                            i.pos[1]-fract,
                                            i.pos[0]+fract,
                                            i.pos[1]+fract,
                                            fill="blue",tags=("bloc",))
        
# MAIN
if __name__ == '__main__':
    controleur=Controleur()
    print "FIN"

Ce code, exécuté sous windows avec éclipse avec l'extension pydev d'installé et utilisant l'interpreteur python 2.6 affiche un carré rouge avec 4 carré bleus.

Sur mac os, sous eclipse, avec ce même pydev d'installé et la même version de python,
je ne vois qu'une fenêtre blanche avec un minuscule carré noir...

Je crois que le problème viens de la librairie graphique TKinter...

quelqu'un aurait-il une idée de la source du problème ?

PS. (Je dois le remettre mardi, donc le 8 février.)


MERCI !