IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Enregistrer matrice tkinter


Sujet :

Tkinter Python

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Enregistrer matrice tkinter
    Voilà j'ai un projet en Info à rendre sur Tkinter.
    Je dois rendre un programme qui affiche une grille dans laquelle on peut dessiner ( en remplissant des rectangles avec de la couleur) et qui doit enregistrer et charger la matrice du dessin.
    J'ai essayé plusieurs solutions, dont certaines trouvées sur ce forum mais rien ne fonctionne. Je vous donne le code de mon programme. La partie en rouge est celle qui me pose problème. ( parmi celle-ci, la partie en commentaire correspond à l'ancien fonction qui ne marchait pas non plus)
    Merci d'avance !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    from Tkinter import *
    import tkFileDialog 
    import tkFont
     
    # Variables utilisées
     
    xo = 10
    yo =10
    c = 30
    nombreligne = 10
    nombrecolonne=10
    couleur = "black"
     
    def dessine_grille(): # fonction creant la grille
        for i in range(nombreligne+1):
            can.create_line(xo+c*i, yo,xo+c*i,yo + nombreligne*c)
            can.create_line(xo, yo+c*i,xo+nombrecolonne*c ,yo+c*i)
     
    def affiche (self): # Ouvrir le fichier recherché
        nomfichier = tkFileDialog.askopenfilename(parent=root, mode = "rb", ttle="Choisir un fichier")
        if nomfichier != None:
            data = nomfichier.read()
            nomfichier.close ()
            self.entree.delete (0.0, END)
            self.entree.insert (0.0,END)
     
    def correspond(x,y): # Coordonnées x et y
        return [(y-yo)/c,(x-xo)/c]
     
    def cree_mat (): # matrice de base
        mat = []
        for i in range(nombreligne):
            col = []
            for j in range(nombrecolonne):
                col.append(0)
            mat.append(col)
        return mat
     
    matrice = cree_mat ()
     
    def position(event): # Position de la souris dans le canevas
        global couleur
        global matrice
        [i,j]=correspond(event.x,event.y)
        if i in range(nombreligne) and j in range (nombrecolonne):
            can.create_rectangle(xo +c*j,yo+c*i,xo +c*(j+1),yo+c*(i+1),fill=couleur)
            if couleur=="white":
                matrice[i][j]=0
            else:
                matrice[i][j]=couleur
     
    def monquitter(): # Fonction quitter
        fen.quit()
        fen.destroy()
     
    def ecriture (matrice,fichier):
        fichierEcriture=open(fichier,"w")
        fichierEcriture.write(str(nombreligne)+ '\n')
        fichierEcriture.write(str(nombrecolonne)+'\n')
        for ligne in matrice:
            for valeur in matrice:
                fichierEcriture.write(str(valeur))
            fichierEcriture.write('\n')
        fichierEcriture.close ()
     
    ####################################
    def save ():
        fichier=sauv.get()
        ecriture(matrice,fichier)
    ####    nomfichier = tkFileDialog.asksaveasfile(parent = root, title ="Sauvegarder")
    ##    nomfichier=sauv.get()
    ##    if len(nomfichier) > 0:
    ##        data = open (nomfichier, "w")
    ##        #txt = self.entree.get (0.0, END)
    ##        for i in range(nombreligne):
    ##            ligne=""
    ##            for j in range(nombrecolonne):
    ##                ligne=ligne+str(matrice[i][j])+" "
    ##            ligne=ligne+"\n"         
    ##            data.write (ligne)
    ##            data.close ()
     
    def sauvegarde (): # Sauvegarder
        sauv.grid(column=1001,row=4)
        Lsauv.grid(column=1001,row=3)
        Button.grid_forget (be)
    ####################################
     
    def lire (): # Fonction permettant de charger
        charg=Entry(fen)
        Lcharg=Label(fen, text="nom du fichier a recuperer")
        charg.grid(column=1001,row=5)
        Lcharg.grid(column=1001,row=4)
        Button.grid_forget (bc)
        be.grid(row = 2, column = 1001)
        l = charg.get
        charg.bind ("<Return>", affiche)
     
    def gomme (): # Fonction de la gomme pour effacer les couleurs actuelles sur le canevas
        global couleur
        couleur = "white"
     
    # Fonctions couleur
     
    def rouge ():
        global couleur
        couleur = "red"
     
     
    def vert ():
        global couleur
        couleur = "green"
     
     
    def bleu ():
        global couleur
        couleur = "blue"
     
     
    def jaune ():
        global couleur
        couleur = "yellow"
     
     
     
    # Widgets
     
    fen=Tk()
     
    can=Canvas(fen,width=400,height=400,bg="white")
    can.grid(column=0, row =1, rowspan = 1000, columnspan=1000)
     
    bd=Button(fen,text="Nouvelle grille",command=dessine_grille, font=("courrier","12","bold"))
    bd.grid(row = 1, column=1001)
     
    bc=Button(fen,text="Sauvegarde",command=sauvegarde, font=("courrier","12","bold"))
    bc.grid(row = 2, column = 1001)
     
    be=Button(fen,text="Charger",command=lire, font=("courrier","12","bold"))
    be.grid(column=1001, row = 3)
     
    bg=Button(fen,text="Gomme",command=gomme)
    bg.grid(column=0, row = 1004)
     
    bq=Button(fen,text="Quitter",command=monquitter)
    bq.grid(column=1001, row =1005)
     
    br= Button (fen, text="", command=rouge, bg ="red")
    br.grid (column = 500, row=1002)
     
    by= Button (fen, text="", command=jaune, bg ="yellow")
    by.grid (column = 500, row=1003)
     
    bb= Button (fen, text="", command=bleu, bg ="blue")
    bb.grid (column = 500, row=1004)
     
    bv= Button (fen, text="", command=vert, bg ="green")
    bv.grid (column = 500, row=1005)
     
    Ltitre=Label (fen, text="Tp Note Sophie et Capucine", fg = "red", font =("courrier","10"))
    Ltitre.grid (column=500, row =0)
     
    sauv=Entry(fen)
    Lsauv=Label(fen, text="nom du fichier de sauvegarde")
     
    sauv.bind ("<Return>", save)
     
     
    can.bind ("<Button-1>", position)
     
    fen.mainloop()

  2. #2
    Membre éprouvé
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Points : 1 006
    Points
    1 006
    Par défaut
    Bonjour, je pense aue l un des problemes vient du fait que tu ne formate pas les donnes au moment ou tu les ecris. Si tu veux sauvegarder: 1, 45, 888, 53, 555
    dans ton fichier on vera juste: 14588853555 . Et je ne pense pas qu il soit possible de recuperer les infos.
    Tu devrais te servir de separateurs pour avoir un fichier de la forme:
    largeur,hauteur,
    d1,d2,d3,...,dn,
    e1,d2,d3,...,en,
    ...,
    m1,m2,m3,...,mn,
    Ainsi, au moment de la recuperation des informations, tu cherches dans la premiere ligne la taille de l image.
    Donc tu recuperes ton fichier sous forme de liste de lignes avec <fichier.readlines> ensuite pour chaque ligne tu fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    newl = lst_lignes[index].split(",").pop()
    Le pop c est pour supprimer l element apres la derniere virgule.

    @+

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour votre réponse cependant je ne comprends pas bien ce que vous voulez dire ..... notre prof nous a dis qu'il fallait que ça s'inscrive dans une matrice que l'on a deja defini et que les couleur remplacent les 0 dedans ....

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/12/2009, 21h22
  2. Split d'enregistrement (Matrice)
    Par ocesbron dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/08/2009, 09h57
  3. Matlab enregistrement matrice au format image
    Par janvier.janvier dans le forum Images
    Réponses: 5
    Dernier message: 06/01/2009, 19h58
  4. Enregistrement matrice image au format texte
    Par nourch dans le forum Images
    Réponses: 12
    Dernier message: 22/07/2008, 08h59
  5. Enregistrer matrice de float
    Par ninours23 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 05/03/2008, 14h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo