Je ne comprends pas du tout comment utiliser l'héritage de classe sur Tkinter.
Le code suivant crée un Canvas qui est gris foncé, puis j'ai envie de créer des personnages représentés par des rectangles. Est-ce que ce que j'ai écrit vous semble correct ?
En fait ce que j'aimerais faire c'est d'abord créer le Canvas (class Game) puis rajouter des personnages (rectangles de classe Perso) sur le Canvas Game. Avec le code que tu m'as donné on crée un nouveau Canvas à chaque création de nouveau personnage.
Je n'arrive pas à trouver de cours sur ce sujet sur Internet, en aurais-tu ?
Sinon d'après ce que j'ai compris je dois faire ça ? :
import tkinter as tk
class Game(tk.Canvas):
def __init__(self, master=None, winWidth=700, winHeight=700):
self.can = tk.Canvas(master, width=winWidth, height=winHeight)
self.can.pack()
class Perso(Game):
def __init__(self):
root = tk.Tk()
root.geometry('700x700')
game = Game(root)
root.mainloop()
Mais je ne sais pas du tout comment compléter ce code
En fait ce que j'aimerais faire c'est d'abord créer le Canvas (class Game) puis rajouter des personnages (rectangles de classe Perso) sur le Canvas Game. Avec le code que tu m'as donné on crée un nouveau Canvas à chaque création de nouveau personnage.
Effectivement, c'est le principe de l'héritage, quand on instancie une classe fille (Perso), cette instance possède tous les attributs et méthodes de la classe mère (Game). Donc ici, chaque instance de Perso possèdera son propre canvas. Je pense que l'héritage n'est pas la bonne solution ici.
Ici, faire de Perso une classe dérivée de Game n'a pas de sens : l'héritage est une spécialisation et dans ton cas, un personnage n'est pas un jeu, c'est tout au plus un composant de ton jeu. L'héritage construit un lien de type is-a (tu confonds être et avoir).
En Tkinter, au niveau utilisateur, l'héritage (d'un widget comme Frame) s'utilise surtout pour créer des widgets réutilisables. Regarde dans Swinnen où c'est bien expliqué, avec de nombreux exemples. Regarde aussi cette recherche sur stackoverflow.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Découverte Python Doc Tkinter Les chaînes de caractères