Modification de l'attribut dans une classe différente

cs_asterixobelix Messages postés 15 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 5 janvier 2013 - 4 janv. 2013 à 20:08
cs_asterixobelix Messages postés 15 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 5 janvier 2013 - 5 janv. 2013 à 16:45
Bonjour,
J'ai une classe "De" pour gérer un Dé avec une fonction tirage aléatoire "lance_de".
J'ai une autre classe "fenetre" pour gérer mon affichage.
J'ai une classe "mon_app" pour gérer le tout. Dans cette dernière je souhaite modifier l'attribut text de la classe "fenetre" avec le résultat de la fonction "lance_de" de la classe "De".
Je n'arrive pas à faire afficher le résultat du tirage.

Mon code allégé:
import wx
import random				# import de la classe " random "
class De:					# définition de notre classe dé
        """ Classe définissant un dé caractérisé par :
        son nombre de faces
        sa couleur """

        def __init__(self, couleur, face):	# notre méthode constructeur
            """constructeur"""
            self.couleur=couleur
            self.face=face
            self.point=""
        def lance_de(self):			# méthode utilisateur ne pas mettre le double " _ "
            self.point=random.randint(1, self.face) # nombre aléatoire compris entre 1 le nb. de faces 
    

class Fenetre(wx.Frame):
    def __init__(self, titre):
        wx.Frame.__init__(self, None, 1, title titre, size (200, 100))
        conteneur wx.Panel(self, 1, size self.GetClientSize())
        text="0"
        etiquette wx.StaticText(conteneur, 1, text, style wx.ALIGN_CENTRE)
        etiquette.CentreOnParent()

class MonApp(wx.App):
    def OnInit(self):
        fen = Fenetre("Fenêtre 1")
        fen.Show(True)
        self.SetTopWindow(fen)
        CubeAPoint=De("Vert",6)
        CubeAPoint.lance_de()
        fen.text=str(CubeAPoint.point)
        #print (fen.text)
        return True

app = MonApp()
app.MainLoop()


Merci de m'aider, je suis débutant.
Obélix

1 réponse

cs_asterixobelix Messages postés 15 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 5 janvier 2013
5 janv. 2013 à 16:45
Bonjour,
J'ai trouvé une solution, je ne sais pas si c'est la meilleure!
class Fenetre(wx.Frame):
    def __init__(self, titre):
        wx.Frame.__init__(self, None, 1, title titre, size (200, 100))
        conteneur wx.Panel(self, 1, size self.GetClientSize())
        text="0"
        self.etiquette = wx.StaticText(conteneur, 1, label=text, style = wx.ALIGN_CENTRE)
        self.etiquette.CentreOnParent()
        
    def OnExit(self, evt):
        self.Destroy()

class MonApp(wx.App):
    def OnInit(self):
        fen = Fenetre("Lancé de Dé")
        fen.Show(True)
        self.SetTopWindow(fen)
        CubeAPoint=De("Vert",6)
        CubeAPoint.lance_de()
        fen.etiquette.SetLabel(str(CubeAPoint.point))
        #print (CubeAPoint.point)
        return True



Obélix
0
Rejoignez-nous