J'apprends le python et j'aimerais l'utiliser pour créer une application graphique simple. Puisque Tkinter
est déjà intégré (et très simple à utiliser), j'aimerais l'utiliser pour créer mon application. .
J'aimerais créer une application qui affichera une table contenant des données que j'ai chargées à partir de ma base de données.
J'ai cherché table
mais je n'ai trouvé aucun exemple ni documentation concernant un Tkinter table
_ composant.
Est-ce que Tkinter
a un composant intégré table
? Si non, que pourrais-je/devrais-je utiliser à la place?
Tkinter n'a pas de widget de table intégré. Le plus proche que vous pouvez utiliser est un Listbox
ou un Treeview
du sous-package du tkinter ttk
.
Cependant, vous pouvez utiliser tktable , qui enveloppe le Tcl/Tk
TkTable
widget, écrit par Guilherme Polo . Note : pour utiliser cette bibliothèque d'encapsidation, vous devez d'abord avoir installé la bibliothèque TkTable
de Tk d'origine, sinon vous obtiendrez une "erreur d'importation. ".
Vous pouvez utiliser la grille de Tkinter.
Pour créer un simple tableau de type Excel:
from Tkinter import *
root = Tk()
height = 5
width = 5
for i in range(height): #Rows
for j in range(width): #Columns
b = Entry(root, text="")
b.grid(row=i, column=j)
mainloop()
Vous pouvez récupérer les données en accédant aux enfants de la grille et en obtenant les valeurs à partir de là.
Si la table est en lecture seule et que vous utilisez une version suffisamment moderne de Tkinter, vous pouvez utiliser le widget ttk.Treeview .
Vous pouvez également créer assez facilement une grille de widgets Entry
ou Label
. Voir cette réponse pour un exemple: https://stackoverflow.com/a/11049650/7432
Vous pouvez utiliser tkintertable . Voir ici comment commencer à l'utiliser.
https://github.com/clarenceangel/tkinterstuff Je l'ai fait mais je ne suis pas un pro. Cependant, il crée un tableau et le retourne sous forme d'image que vous pouvez ajouter à un cadre ou à une racine. Vous le nourrissez avec un csv avec un nombre quelconque de lignes et de colonnes tant que les colonnes sont bien sur chaque ligne.