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 :
Offres d'emploi IT
Expert décisionnel business intelligence H/F
Safran - Ile de France - Évry (91090)
Ingénieur analyste programmeur (H/F)
Safran - Auvergne - Montluçon (03100)
Responsable transverse - engagement métiers H/F
Safran - Ile de France - Corbeil-Essonnes (91100)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Python