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) |
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() |