[Python][Classe] intégration fonction "def" dans une classe

Résolu
cs_Acolyte Messages postés 81 Date d'inscription dimanche 17 octobre 2004 Statut Membre Dernière intervention 28 mars 2009 - 28 mars 2009 à 02:28
cs_Acolyte Messages postés 81 Date d'inscription dimanche 17 octobre 2004 Statut Membre Dernière intervention 28 mars 2009 - 28 mars 2009 à 17:58
Bonsoir à tous,

J'ai un petit problème je veux créer un module digit qui permet
d'afficher des chiffres digitaux (virtuel) comme sur les anciens radios
réveil j'ai écrit une source qui marche seulement l'écriture de mes
chiffres (des fonctions) sur l'afficheur digital sont hors de la
classe, je cherche une solution pour les insérer à la classe enfin
qu'il soit exploitable depuis un autre module

voici ma source (ici je ne post que l'exemple du zero pour raccourcir la source):

 
from Tkinter import *


#classe du digit

class segment():

    def __init__(self, can):

        """initialisation du digit"""

        self.can = can

        self.x = 10

        self.y = 10


    def traceVert(self, x, y):

        """segment vertical"""

        self.x = x

        self.y = y

        self.dessin = self.can.create_polygon(self.x, self.y, self.x +
5, self.y - 5, self.x + 10, self.y, self.x+10, self.y + 30, self.x + 5,
self. y + 35,self.x, self.y + 30,fill='dark red')


    def traceHori(self, x, y):

        """segment horizontal"""

        self.x = x

        self.y = y

        self.dessin = self.can.create_polygon(self.x + 5, self.y - 5,
self.x +10, self.y - 10, self.x + 45, self.y - 10, self.x + 50, self.y
- 5, self.x + 45, self.y, self.x + 10, self.y, fill='dark red')


if __name__ == "__main__":

    """neuf fonction qui affiche les segment allume:red eteint:dark red"""

    def zero():

        can.itemconfigure(seg1.dessin, fill='red')

        can.itemconfigure(seg2.dessin, fill='red')

        can.itemconfigure(seg3.dessin, fill='red')

        can.itemconfigure(seg4.dessin, fill='red')

        can.itemconfigure(seg5.dessin, fill='red')

        can.itemconfigure(seg6.dessin, fill='red')

        can.itemconfigure(seg7.dessin, fill='dark red')


    fen = Tk()

    can Canvas(fen, width 140, height = 108, bg='black')

    can.pack()

    

    """creation des segment"""

    seg1 = segment(can)

    seg2 = segment(can)

    seg3 = segment(can)

    seg4 = segment(can)

    seg5 = segment(can)

    seg6 = segment(can)

    seg7 = segment(can)

    seg1.traceHori(10,16)

    seg2.traceVert(55,18)

    seg3.traceVert(55,62)

    seg4.traceHori(10,104)

    seg5.traceVert(10,62)

    seg6.traceVert(10,18)

    seg7.traceHori(10,60)

    

    """affichage du chiffre selon une donnees externe a la classe"""

    a = 0

    while a >= 0 or a <= 9:

        a = input("saisir un nombre : ")

        if a == 0:

            zero()

    fen.mainloop()


j'ai essayé ceci mais j'ai échoué
le code suivant trace bien le digit mais je n'arrive pas
from Tkinter import *

class Digit():
    def __init__(self, can, x, y):
        self.can = can
        self.x = x
        self.y = y

    def traceVert(self, x, y):
        self.x = x
        self.y = y
        self.dessin = self.can.create_polygon(self.x, self.y, self.x + 5, self.y - 5, self.x + 10, self.y, self.x+10, self.y + 30, self.x + 5, self. y + 35,self.x, self.y + 30,fill='dark red')

    def traceHori(self, x, y):
        self.x = x
        self.y = y
        self.dessin = self.can.create_polygon(self.x + 5, self.y - 5, self.x +10, self.y - 10, self.x + 45, self.y - 10, self.x + 50, self.y - 5, self.x + 45, self.y, self.x + 10, self.y, fill='dark red')

    def trace(self):
        self.seg1 = self.traceHori(self.x, self.y)
        self.seg2 = self.traceVert(self.x + 45, self.y + 2)
        self.seg3 = self.traceVert(self.x, self.y + 44)
        self.seg4 = self.traceHori(self.x - 45, self.y + 42)
        self.seg4 = self.traceVert(self.x, self.y - 42)
        self.seg5 = self.traceVert(self.x, self.y - 44)
        self.seg6 = self.traceHori(self.x, self.y + 42)

    def zero(self):
        can.itemconfigure(self.seg1, fill='red')

if __name__ == "__main__":
    fen = Tk()    can Canvas(fen, width 70, height = 108, bg='black')
    can.pack()
    digit1 = Digit(can, 10, 15)
    digit1.trace()
    digit1.zero()
    fen.mainloop()


Si quelqu'un peut m'expliquer mon erreur, je lui en serai très reconnaissant
D'avance merci

++

et bonne prog.

____________________________________
Acolyte vous remercie...

_______________________by Acolyte __

1 réponse

cs_Acolyte Messages postés 81 Date d'inscription dimanche 17 octobre 2004 Statut Membre Dernière intervention 28 mars 2009
28 mars 2009 à 17:58
c'est bon j'ai trouvé une solution si ça intéresse des gens un afficheur 4 digits :

#!usr/bin/python

from Tkinter import *

class Digit():
    def __init__(self, can, x1, y1, x2, y2):
        """initialisation du digit"""
        self.can = can
        # coordonnees du coin superieur gauche
        self.x1 = x1
        self.y1 = y1
        # coordonnees du coin inferieur droit
        self.x2 = x2
        self.y2 = y2
        # unite verticale
        self.hpas = (self.x2 - self.x1) / 6
        # unite horizontale
        self.vpas = (self.y2 - self.y1) / 6
        # tracage des segment de base
        self.trace()
       
    def trace(self):
        """affichage des segment"""
        self.segment1 = self.can.create_polygon(self.x1 + self.hpas, self.y1 + self.vpas,
                                                self.x1 + 2 * self.hpas, self.y1,
                                                self.x1 + 6 * self.hpas, self.y1,
                                                self.x1 + 7 * self.hpas, self.y1 + self.vpas,
                                                self.x1 + 6 * self.hpas, self.y1 + 2 * self.vpas,
                                                self.x1 + 2 * self.hpas, self.y1 + 2 * self.vpas,
                                                fill='dark red')
        self.segment2 = self.can.create_polygon(self.x1 + 7 * self.hpas, self.y1 + 2 * self.vpas,
                                                self.x1 + 8 * self.hpas, self.y1 + 3 * self.vpas,
                                                self.x1 + 8 * self.hpas, self.y1 + 7 * self.vpas,
                                                self.x1 + 7 * self.hpas, self.y1 + 8 * self.vpas,
                                                self.x1 + 6 * self.hpas, self.y1 + 7 * self.vpas,
                                                self.x1 + 6 * self.hpas, self.y1 + 3 * self.vpas,
                                                fill='dark red')
        self.segment3 = self.can.create_polygon(self.x1 + 7 * self.hpas, self.y1 + 10 * self.vpas,
                                                self.x1 + 8 * self.hpas, self.y1 + 11 * self.vpas,
                                                self.x1 + 8 * self.hpas, self.y1 + 15 * self.vpas,
                                                self.x1 + 7 * self.hpas, self.y1 + 16 * self.vpas,
                                                self.x1 + 6 * self.hpas, self.y1 + 15 * self.vpas,
                                                self.x1 + 6 * self.hpas, self.y1 + 11 * self.vpas,
                                                fill='dark red')
        self.segment4 = self.can.create_polygon(self.x1 + self.hpas, self.y1 + 17 * self.vpas,
                                                self.x1 + 2 * self.hpas, self.y1 + 16 * self.vpas,
                                                self.x1 + 6 * self.hpas, self.y1 + 16 * self.vpas,
                                                self.x1 + 7 * self.hpas, self.y1 + 17 * self.vpas,
                                                self.x1 + 6 * self.hpas, self.y1 + 18 * self.vpas,
                                                self.x1 + 2 * self.hpas, self.y1 + 18 * self.vpas,
                                                fill='dark red')
        self.segment5 = self.can.create_polygon(self.x1 + self.hpas, self.y1 + 10 * self.vpas,
                                                self.x1 + 2 * self.hpas, self.y1 + 11 * self.vpas,
                                                self.x1 + 2 * self.hpas, self.y1 + 15 * self.vpas,
                                                self.x1 + self.hpas, self.y1 + 16 * self.vpas,
                                                self.x1, self.y1 + 15 * self.vpas,
                                                self.x1, self.y1 + 11 * self.vpas,
                                                fill='dark red')
        self.segment6 = self.can.create_polygon(self.x1 + self.hpas, self.y1 + 2 * self.vpas,
                                                self.x1 + 2 * self.hpas, self.y1 + 3 * self.vpas,
                                                self.x1 + 2 * self.hpas, self.y1 + 7 * self.vpas,
                                                self.x1 + self.hpas, self.y1 + 8 * self.vpas,
                                                self.x1, self.y1 + 7 * self.vpas,
                                                self.x1, self.y1 + 3 * self.vpas,
                                                fill='dark red')
        self.segment7 = self.can.create_polygon(self.x1 + self.hpas, self.y1 + 9 * self.vpas,
                                                self.x1 + 2 * self.hpas, self.y1 + 8 * self.vpas,
                                                self.x1 + 6 * self.hpas, self.y1 + 8 * self.vpas,
                                                self.x1 + 7 * self.hpas, self.y1 + 9 * self.vpas,
                                                self.x1 + 6 * self.hpas, self.y1 + 10 * self.vpas,
                                                self.x1 + 2 * self.hpas, self.y1 + 10 * self.vpas,
                                                fill='dark red')
   
    def zero(self):
        """affichage d'un zero"""
        self.can.itemconfigure(self.segment1, fill='red')
        self.can.itemconfigure(self.segment2, fill='red')
        self.can.itemconfigure(self.segment3, fill='red')
        self.can.itemconfigure(self.segment4, fill='red')
        self.can.itemconfigure(self.segment5, fill='red')
        self.can.itemconfigure(self.segment6, fill='red')
        self.can.itemconfigure(self.segment7, fill='dark red')
   
    def un(self):
        """affichage d'un un"""
        self.can.itemconfigure(self.segment1, fill='dark red')
        self.can.itemconfigure(self.segment2, fill='red')
        self.can.itemconfigure(self.segment3, fill='red')
        self.can.itemconfigure(self.segment4, fill='dark red')
        self.can.itemconfigure(self.segment5, fill='dark red')
        self.can.itemconfigure(self.segment6, fill='dark red')
        self.can.itemconfigure(self.segment7, fill='dark red')
       
    def deux(self):
        """affichage d'un deux"""
        self.can.itemconfigure(self.segment1, fill='red')
        self.can.itemconfigure(self.segment2, fill='red')
        self.can.itemconfigure(self.segment3, fill='dark red')
        self.can.itemconfigure(self.segment4, fill='red')
        self.can.itemconfigure(self.segment5, fill='red')
        self.can.itemconfigure(self.segment6, fill='dark red')
        self.can.itemconfigure(self.segment7, fill='red')
       
    def trois(self):
        """affichage d'un trois"""
        self.can.itemconfigure(self.segment1, fill='red')
        self.can.itemconfigure(self.segment2, fill='red')
        self.can.itemconfigure(self.segment3, fill='red')
        self.can.itemconfigure(self.segment4, fill='red')
        self.can.itemconfigure(self.segment5, fill='dark red')
        self.can.itemconfigure(self.segment6, fill='dark red')
        self.can.itemconfigure(self.segment7, fill='red')
       
    def quatre(self):
        """affichage d'un quatre"""
        self.can.itemconfigure(self.segment1, fill='dark red')
        self.can.itemconfigure(self.segment2, fill='red')
        self.can.itemconfigure(self.segment3, fill='red')
        self.can.itemconfigure(self.segment4, fill='dark red')
        self.can.itemconfigure(self.segment5, fill='dark red')
        self.can.itemconfigure(self.segment6, fill='red')
        self.can.itemconfigure(self.segment7, fill='red')
       
    def cinq(self):
        """affichage d'un cinq"""
        self.can.itemconfigure(self.segment1, fill='red')
        self.can.itemconfigure(self.segment2, fill='dark red')
        self.can.itemconfigure(self.segment3, fill='red')
        self.can.itemconfigure(self.segment4, fill='red')
        self.can.itemconfigure(self.segment5, fill='dark red')
        self.can.itemconfigure(self.segment6, fill='red')
        self.can.itemconfigure(self.segment7, fill='red')
       
    def six(self):
        """affichage d'un six"""
        self.can.itemconfigure(self.segment1, fill='red')
        self.can.itemconfigure(self.segment2, fill='dark red')
        self.can.itemconfigure(self.segment3, fill='red')
        self.can.itemconfigure(self.segment4, fill='red')
        self.can.itemconfigure(self.segment5, fill='red')
        self.can.itemconfigure(self.segment6, fill='red')
        self.can.itemconfigure(self.segment7, fill='red')
       
    def sept(self):
        """affichage d'un sept"""
        self.can.itemconfigure(self.segment1, fill='red')
        self.can.itemconfigure(self.segment2, fill='red')
        self.can.itemconfigure(self.segment3, fill='red')
        self.can.itemconfigure(self.segment4, fill='dark red')
        self.can.itemconfigure(self.segment5, fill='dark red')
        self.can.itemconfigure(self.segment6, fill='dark red')
        self.can.itemconfigure(self.segment7, fill='dark red')
       
    def huit(self):
        """affichage d'un huit"""
        self.can.itemconfigure(self.segment1, fill='red')
        self.can.itemconfigure(self.segment2, fill='red')
        self.can.itemconfigure(self.segment3, fill='red')
        self.can.itemconfigure(self.segment4, fill='red')
        self.can.itemconfigure(self.segment5, fill='red')
        self.can.itemconfigure(self.segment6, fill='red')
        self.can.itemconfigure(self.segment7, fill='red')
       
    def neuf(self):
        """affichage d'un neuf"""
        self.can.itemconfigure(self.segment1, fill='red')
        self.can.itemconfigure(self.segment2, fill='red')
        self.can.itemconfigure(self.segment3, fill='red')
        self.can.itemconfigure(self.segment4, fill='red')
        self.can.itemconfigure(self.segment5, fill='dark red')
        self.can.itemconfigure(self.segment6, fill='red')
        self.can.itemconfigure(self.segment7, fill='red')
   
    def affichage(self, number):
        """methode d'affichage d'un chiffre"""
        if number == 0:
            self.zero()
        if number == 1:
            self.un()
        if number == 2:
            self.deux()
        if number == 3:
            self.trois()
        if number == 4:
            self.quatre()
        if number == 5:
            self.cinq()
        if number == 6:
            self.six()
        if number == 7:
            self.sept()
        if number == 8:
            self.huit()
        if number == 9:
            self.neuf()

if __name__ == "__main__":
    fen = Tk()    can Canvas(fen, width 250, height = 110, bg='black')
    can.pack()
    unite = Digit(can, 190, 10, 230, 40)
    dizaine = Digit(can, 130, 10, 170, 40)
    centaine = Digit(can, 70, 10, 110, 40)
    millier = Digit(can, 10, 10, 50, 40)
    a = 0
    b = 0
    while (1):
        c = 0
        b = 0
        a = input("saisir un nombre entre 00 et 99 : ")
        d = a / 1000
        a -= d * 1000
        c = a / 100
        a -= c * 100
        b = a / 10
        a -= b * 10
        unite.affichage(a)
        dizaine.affichage(b)
        centaine.affichage(c)
        millier.affichage(d)
    fen.mainloop()

++

et bonne prog.

____________________________________
Acolyte vous remercie...

_______________________by Acolyte __
3
Rejoignez-nous