Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/10/2006, à 22:43

bakalegum

[objet!!] arrrhhhhhhh!!

bonjour D:

bon zen je suis sur que quelqu un va m expliquer. bon donc je debute sous python, et mon premier programme sera... suspensme: PONG le jeu de raquette le seul l unique lol
bon  alors deja pour comprendre mon probleme voici le code:

## pour plus tard peut etre, pk est ke ke dessine rackett est mis en place sans cliquer pause!!!
from Tkinter import *
#jeu pong
    
class Application(Frame):
    def __init__(self):
        Frame.__init__(self)

        self.pack()
        #self.DesineRakett(cote=-1,coul='blue')
        #self.DesineRakett(cote=1)
        Label(self,
              text ="jeu de pong ").grid(row =2)
        #Button(self, text ='Quitter',
         #      command =self.quit).grid(row =3, sticky = E)
        Button(self, text ='affich rackett',
               command =self.DesineRakett(cote=-1)).grid(row =3, sticky = W)
        self.mainloop()


    def DesineRakett(self,longueur=50,cote=1,y=250,coul='green'):

        self.longueur =longueur #lalongueur de la raquette
        self.cote= cote #(1 pour  gauch -1 pour droite)
        self.coul=coul #couleur de la raquette bleu vs rouge par exemple
        self.y=y #coordonnée verticale    
        self.can = Canvas(self, width=700, height =500, bg ='ivory',borderwidth =5, relief =SUNKEN)
        self.can.grid(row =1, pady =5, padx =5)
        self.poz=(self.y+self.longueur/2)
        if self.cote==1:
            x=50
            print'gauche'
        elif self.cote==-1:
            x=650
            print'droite'
        self.can.create_line(x,self.y-self.longueur/2,x,self.y+self.longueur/2,width=6,fill=coul)






    
f=Application()
#class ball:

donc deja sachez que j ai totalement remanié mon code, fait une classe pour la raquette etc, mais j ai repris ce cas la car c est un exemple simple d un probleme recurent que je trouve toutes les 5 minutes, cela doit venir de moi j en suis sur:
donc voila re marquez dans le code la ligne self.DesineRakett(cote=1) qui sert a  afficher la raquette a droite  pour cote=1 et gauche pour -1, bon ok, remarquez la aussi que les 2 lignes pour afficher la raquette de droite et de gauche sont commentées donc il ne devrait rien se passer.
ensuite le bouton : Button(self, text ='affich rackett',
               command =self.DesineRakett(cote=-1)).grid(row =3, sticky = W)

sert a afficher la raquette qd on clic dessus, or si on execute le scipt..la raquette apparait et c est bien du au bouton puis qu en remplacant 1 par -1 la raquette change de coté, et en commentant la ligne du bouton rien ne se passe , la fenetre est bien vide...

expliquez moi pourquoi s il vous plait l action du bouton est executer sans cliquer dessus( alors que si je met self.quit par exemple, il ne quitte qu au clic) merci
j espere avoir été assezprecis dans mes explication, et je vous remerci sincerement tu tps que vous avez pris a me lire

Dernière modification par bakalegum (Le 27/10/2006, à 22:45)

Hors ligne

#2 Le 28/10/2006, à 02:21

trucutu

Re : [objet!!] arrrhhhhhhh!!

Pourrais tu sortir la fonction mainloop du constructeur de Application (__init__) (mettre f.mainloop après ton f=Application) et instancier tes widgets (bout = Button ... par exemple), et dire si ca résoud ton problème ?

Dernière modification par trucutu (Le 28/10/2006, à 02:22)


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#3 Le 28/10/2006, à 14:02

bakalegum

Re : [objet!!] arrrhhhhhhh!!

je fais ca de suite!
dire que je suis obligé de poster sur le forum de ubuntu pour avoir une reponse, c est allucinant, c est pas pour rien que c est mon forum préféré hehe!:D

Hors ligne

#4 Le 28/10/2006, à 14:44

bakalegum

Re : [objet!!] arrrhhhhhhh!!

voila ce que j ai fais:

## pour plus tard peut etre, pk est ke ke dessine rackett est mis en place sans cliquer pause!!!
from Tkinter import *
#jeu pong
    
class Application(Frame):
    def __init__(self):
        Frame.__init__(self)

        self.pack()
        #self.DesineRakett(cote=-1,coul='blue')
        self.DesineRakett(cote=1)
        Label(self,
              text ="jeu de pong ").grid(row =2)
        #Button(self, text ='Quitter',
         #      command =self.quit).grid(row =3, sticky = E)
        bout=Button(self, text ='affich rackett',
               command =self.DesineRakett(cote=-1))
        bout.grid(row =3, sticky = W)
        


    def DesineRakett(self,longueur=50,cote=1,y=250,coul='green'):

        self.longueur =longueur #lalongueur de la raquette
        self.cote= cote #(1 pour  gauch -1 pour droite)
        self.coul=coul #couleur de la raquette bleu vs rouge par exemple
        self.y=y #coordonnée verticale    
        self.can = Canvas(self, width=700, height =500, bg ='ivory',borderwidth =5, relief =SUNKEN)
        self.can.grid(row =1, pady =5, padx =5)
        self.poz=(self.y+self.longueur/2)
        if self.cote==1:
            x=50
            print'gauche'
        elif self.cote==-1:
            x=650
            print'droite'
        self.can.create_line(x,self.y-self.longueur/2,x,self.y+self.longueur/2,width=6,fill=coul)





############################################################
if __name__ == '__main__':
    f=Application()
    f.mainloop()

je pense que c est ce que tu voulais que je fasse, mais aucun changement  exactement la meme chose, j ai aussi tenté avec mon "vrai" programme sur lequel j ai encore le meme probleme et rien a y faire?
une autre idée?

je te remercie sincerement d a voir pris le tps de te mettre le nez dans mon tit bordel smile

Hors ligne

#5 Le 28/10/2006, à 14:53

trucutu

Re : [objet!!] arrrhhhhhhh!!

C'est normal que tu appelles DesineRackett dans _init_ ? C'est peut être pour ca que ta raquettes s'affiche directement


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#6 Le 28/10/2006, à 15:26

bakalegum

Re : [objet!!] arrrhhhhhhh!!

je lappel avec cote=1 ce qui signifie affiche raquatte de droite, et -1 dans le bouton, pour afficher celle de gauche,
mais le plus etonnant c est que qd je lui dit self.DesineRakett(cote=1) il ne va pas le faire pour afficher celle qui correspond a -1 du bouton..
humm c pas trés clair tongue

Hors ligne

#7 Le 28/10/2006, à 17:08

trucutu

Re : [objet!!] arrrhhhhhhh!!

Il y a aussi plusieurs petit détail qui sont (pour moi..) des risques à bug :
- tu appelles DesineRackett avec un nombre d'argument différent de ce que tu as déclaré dans la fonction.
- tu déclares DesineRackett en imposant directement une valeur à "cote" de 1,  et tu arrives a obtenir un effet -1 ?


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#8 Le 28/10/2006, à 17:23

bakalegum

Re : [objet!!] arrrhhhhhhh!!

- tu déclares DesineRackett en imposant directement une valeur à "cote" de 1,  et tu arrives a obtenir un effet -1 ?

ba oui il prend 1 par defaut si je ne lui dit pas -1 et cela recoupe ta premiere remarque , je peux me permettre de ne pas donner toutes les valeurs puisque j en ai defini par defaut.

bon je suis toujours bloqué... commence a m ennervé

Hors ligne

#9 Le 28/10/2006, à 22:09

trucutu

Re : [objet!!] arrrhhhhhhh!!

Autre suggestion (qui rassure dans ce genre de cas):
tu peux pas prendre un exemple simple qui ressemble à ton problème (ca doit bien se trouver dans ton bouquin sur python) et t'en insprirer en essayant de coller au mieux avec l'exemple ?


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#10 Le 28/10/2006, à 23:28

bakalegum

Re : [objet!!] arrrhhhhhhh!!

c est exactement ce que j ai fait! j ai le cours de swinnen, et la pour coller on peut dire que je colle.

mais bon la je craque un peu de ne pas trouver de reponse a mes problemes en python, les forum de prog sont mort ya personne pas de reponse rien, tu es la personne qui t es le plus investie pour l instant, donc je me met au ruby , un de mes potes etant super fort et disposé a m aider.
ca fait une semaine que j ai ce probleme et quand je le contourne il revient toujours d une maniere ou d une autre, cela doit venir de moi, donc je met le python en pause pour l instant.
voila

enfin je reste toujors disoser a repartir des que l on m aura expliquer pourquoi ce bouton se lance sans que l on clique dessus ( et c est la meme chose pour les clic de souris un peu plus tard dans mon code)

Hors ligne

#11 Le 29/10/2006, à 00:06

trucutu

Re : [objet!!] arrrhhhhhhh!!

Bon, j'ai ressorti un prog perso, et une petite idée à germée :

self.bou1 = Button(self.f3, text='AutoRename',
            command=self.rename_auto,font=("Helvetica", 10))
self.bou1.grid(row=2, padx=10)

def rename_auto(self)
    bla bla bla...

Tentes de supprimer "(cote=x)" dans ton bouton. C'est la différence avec le bonton précédent (self.quit...) !!!
Et vire touts les argument de ta fonction (garde seulement "self"), quite à les déclarer comme des variables dans le corps de la fonction. Perso, les boutons déclarés avec command=NomFonction (sans arguments), ca marche nickel.

Sinon, a part tomber dans la facilité de l'assistanat, je ne vois pas en quoi passer au ruby résoudra tes problèmes, mais bon ...


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#12 Le 29/10/2006, à 01:47

bakalegum

Re : [objet!!] arrrhhhhhhh!!

come je l ai dit je passe a ruby pour voir autre chose me changer les esprit, pour l instant pyhon = trop de prise tete je frefere mettre ca de coté pour l instant.

je testerais qd meme avec plaisir tonidee des demain, je te remercie

Hors ligne