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
|
# -*- coding:Utf-8 -*-
import tkinter as tk
import ttk
class Fenetre(tk.Tk)*:
def __init__(self, master=None):
tk.Tk.__init__(self,master)
self.dict_produit=['ref(10)','Nom(20)','Fabricant(15)','Details(50)']
self.produits=[['123456','Aspirateur','Rowenta','garanti 2 ans pieces et main d uvre'],['1234678','Television','Panasonic','technologie LED'],
['123456789','Réfrigirateur','Carrefour','fksdfksm dfkdlmsfk lkflmsdk flkf kfsdlm dfjksdlj fjsdkljfd jfklsdjkj fskljkl fskdjflksj fsdklfjsl jklsdjfkljs kllsfjsdklfjsl,
klskdfjfjdsfh dhfjksh jhdksj fhks jksdhfsjk dfjksdhf jkhf ksdhfksdjhf sk jdfhkshks df fsdfs zerze rzfs fsd ziorzu ze sdfo z ruzeio ueiozu od']]
self.geometry('800x500+100+100')
self.IG_basique()
def IG_basique(self):
#Creation 3 cadres pour formater la fenetre
self.cadre1=tk.Frame(self,bg='yellow',width=100,height=250)
self.cadre2=tk.Frame(self,bg='grey',width=650,height=250)
self.cadre3=tk.Frame(self,width=100,height=250)
self.bout1=tk.Button(self.cadre2,text='validez',command=self.affich_curs)
self.msg=tk.Message(self,bg='orange',aspect=150,width=650)
self.cadre1.grid(row=1,column=0,padx=1,pady=1)
self.cadre2.grid(row=1,column=1,padx=1,pady=1)
self.cadre2.grid_propagate(0)
self.cadre3.grid(row=1,column=2,padx=1,pady=1)
self.bout1.grid(column=1,padx=1,pady=1)
self.msg.grid(row=3,column=1,padx=1,pady=1,sticky='ew')
def affich_curs(self):
#Suppression du cadre d origine utile pour de la saisie
#Remplacement par un nouveau cadre qui accueillera le treeview
if isinstance(self.cadre2,tk.Frame):
self.cadre2.grid_remove()
self.cadre4=tk.Frame(self,width=650,height=250,bg='grey')
#Ici je vais recuperer une liste des tailles max de champs contenus dans self.produit pour
# formater les colonnes de manière homogene
self.val_li=0
self.val_col=0
self.taille_cell=[]
for self.val_li in range(len(self.dict_produit)):
self.taille_cell_trans=0
for self.val_col in range(len(self.produits)):
if len(self.produits[self.val_col][self.val_li])>self.taille_cell_trans:
self.taille_cell_trans= len(self.produits[self.val_col][self.val_li])
#Ici je mets des valeurs un peu particulières car les cellules se mesurent en pixel et j'ai mal
# établi la concordance pour avoir une taille d affichage correcte.Ca ne gene pas la
# création du treeview
if self.taille_cell_trans>150:
self.taille_cell_trans=400
else:
self.taille_cell_trans=self.taille_cell_trans*8
self.taille_cell.append(self.taille_cell_trans)
#Init treeview
self.tview1=ttk.Treeview(self.cadre4,columns=tuple([col[:-4] for col in self.dict_produit]),show='headings',height=2)
#Init des scrollbars
self.x_asc=tk.Scrollbar(self.cadre4,command=self.tview1.xview, orient=tk.HORIZONTAL)
self.y_asc=self.x_asc=tk.Scrollbar(self.cadre4,command=self.tview1.yview, orient=tk.VERTICAL)
self.tview1.config(xscrollcommand=self.x_asc.set)
self.tview1.config(yscrollcommand=self.y_asc.set)
#Creation du treeview
for index in range(len(self.dict_produit)):
self.tview1.heading((self.dict_produit[index])[:-4],text=(self.dict_produit[index])[:-4]))
self.tview1.columns((self.dict_produit[index])[:-4],width=self.taille_cell[index],stretch='false',anchor=tk.W)
#Mise en forme des données
for index in range(len(self.produits)):
self.tview1.insert(' ',index,values=self.produits[index])
self.tview1.grid_propagate(0)
self.tview1.grid(row=1,column=0,sticky=tk.NSEW)
self.cadre4.grid_propagate(0)
self.cadre4.grid(row=1,column=1,padx=1,pady=1)
#Programme appelant
monapp=Fenetre()
monapp.mailoop() |
Partager