self.btc2 = Button(self.ccc, text='Comic2', width=15, command=Gam2.brnch(self))
Bonjour,
c'est là que vient le problème.
En passant la commande avec les parenthèses (et les arguments requis) ça appelle la fonction plutôt que de pointer sur la fonction qui sera appelée au moment de cliquer.
Malheureusement tkinter ne dispose pas d'argument permettant de faire passer les arguments qui seront appelés par commande.
De plus j'y vois un autre problème, Game2 doit être instancié avant de pouvoir appeler la fonction brnch.
Si vous ne souhaitez pas garder l'instance vous pouvez utiliser lambda :
self.btc2 = Button(self.ccc, text='Comic2', width=15, command=lambda: Gam2().brnch())
L'argument self de brnch est passé automatiquement par l'instance Game2()
Mais le mieux serait de créer une fonction dans la classe Gammic pour conserver l'instance de Game2 :
1 2 3 4 5 6 7 8 9 10 11
| def comic(self):
if self.ccc is not None:
self.ccc.destroy()
self.ccc = Toplevel(self)
self.ccc.geometry('600x666')
self.btc2 = Button(self.ccc, text='Comic2', width=15, command=self.cb_game2)
self.btc2.pack()
def cb_game2(self):
self.gam2 = Gam2()
self.gam2.brnch() |
Pour plus d'informations sur les callbacks tkinter : http://effbot.org/zone/tkinter-callbacks.htm
Partager