Pages : 1
#1 Le 27/10/2006, à 21: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, à 21:45)
Hors ligne
#2 Le 28/10/2006, à 01: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, à 01: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, à 13: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, à 13: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
Hors ligne
#5 Le 28/10/2006, à 13: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, à 14: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
Hors ligne
#7 Le 28/10/2006, à 16: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, à 16: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, à 21: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, à 22: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 28/10/2006, à 23: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, à 00: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
Pages : 1