Créer un tableau interactif en python avec Tkinter

Le , par autran, Rédacteur
e développeurs Python se plaignent qu'il n'y ai pas de tableaux en Tkinter.
Il faut reconnaître que Python est un beau produit très léger qui permet nativement de développer des IHM pour Windows comme UNIX. Ce qui est bien pratique pour développer sur des nano PC comme raspberry. Alors je propose cette classe qui sera adaptable sur le principe comme un composant enfichable sur une IHM Tk.
Je l'utilise couramment pour charger les tableaux que j'ai chargés depuis Excel ou XML, car Python le gère très bien également et quasiment nativement.
Code python : Sélectionner tout
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
class IHM(Frame): 
    def __init__(self, fenetre, height, width): 
        Frame.__init__(self, fenetre) 
        self.numberLines = height 
        self.numberColumns = width 
        self.pack(fill=BOTH) 
        self.data = list() 
        for i in range(self.numberLines): 
            line = list() 
            for j in range(self.numberColumns): 
                cell = Entry(self) 
                cell.insert(0, 0) 
                line.append(cell) 
                cell.grid(row = i, column = j) 
            self.data.append(line) 
  
        self.results = list() 
        for i in range(self.numberColumns): 
            cell = Entry(self) 
            cell.insert(0, 0) 
            cell.grid(row = self.numberLines, column = i) 
            self.results.append(cell) 
        self.buttonSum =  Button(self, text="somme des colonnes", fg="red", command=self.sumCol) 
        self.buttonSum.grid(row = self.numberLines, column = self.numberColumns) 
  
    def sumCol(self): 
        for j in range(self.numberColumns): 
            result = int(0) 
            for i in range(self.numberLines): 
                result += int(self.data[i][j].get()) 
            self.results[j].delete(0, END) 
            self.results[j].insert(0, result)
Cette classe permet de créer un tableau dynamique de dimensions variables. J'expose également une méthode pour obtenir en pied de colonne les sommes. Cet objet est hérité de la classe Frame bien connue des développeurs Tkinter. Elle prend en paramètre de construction la fenêtre dans laquelle elle viendra s’insérer ainsi que les dimensions du tableau de données.
Donc dans le main on la lancerait de la façon suivante :
Code python : Sélectionner tout
1
2
3
fenetre = Tk() 
interface = IHM(fenetre, 6, 5) 
interface.mainloop()


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster un commentaire

Avatar de Nanah Payet Nanah Payet - Nouveau Candidat au Club https://www.developpez.com
le 24/10/2017 à 10:45
Bonjour,

J'ai développer sur Python un programme avec tableau et j'arive a appeler un tableau ecxel et l'ouvrire mais pour la fonction PDF j'arrive à crée le PDF mais il ne s'ouvre pas automatiquement ??

vous pouvez m'aider ??

Cordialement

Nanah
Avatar de autran autran - Rédacteur https://www.developpez.com
le 24/10/2017 à 11:02
Bonjour nanah,

Si tu as des questions, tu devras les poser sur le forum.
En effet cela permet d'une part d'exposer ta problématique à toute la communauté des experts Python qui forcément pourront te répondre, et d'autre part cela permet aux débutants qui auraient le même problème que toi de connaître la réponse.

Bonne journée
Avatar de Nanah Payet Nanah Payet - Nouveau Candidat au Club https://www.developpez.com
le 24/10/2017 à 12:02
Merci
Avatar de dedalios dedalios - Membre régulier https://www.developpez.com
le 09/11/2017 à 14:33
Ne manque t'il pas plusieurs chose dans ce code

Peut être un import tkinter

Rien que pour la partie de base
Code : Sélectionner tout
class IHM(Frame):                        ---------> undefined varible Frame
Code : Sélectionner tout
   self.pack(fill=BOTH)   ---------> undefined varible BOTH
Code : Sélectionner tout
   cell = Entry(self)---------> undefined varible Entry
Code : Sélectionner tout
1
2
   self.buttonSum =  Button(self, text="somme des colonnes", fg="red", command=self.sumCol)  
     ---------> undefined varible Button
Code : Sélectionner tout
1
2
        fenetre = Tk()  
        interface = IHM(fenetre, 6, 5)
même problème avec TK() et IHM undefined varible
Contacter le responsable de la rubrique Python