Bonjour à tous,

Je teste l’interface tkinter pour créer un programme de saisi d'alimentation de bdd.J'en suis aujourd'hui a essayer d'afficher mes retours de requêtes dans un treeview.
Cependant, après de nombreux tests je constate que je ne peux pas afficher un champ de caractères long(multilignes) dans une cellule de ce treeview car je n'arrive pas à gérer sa hauteur. Je ne trouve pas l'option qui permet de le faire, et il me semble même qu'elle n'existe pas.

De plus j'ai un souci de connexion du scrollbar X qui ne s'active que si j'étire la cellule, me permettant de voir le reste de la cellule,bien que je l'ai invalidé,.

Je vous mets mon code débarrassé des traitements annexes qui ne vous serviront a rien.Si j'ai bien recopié vous devriez voir 3 cadres avec 1 bouton qui activera la création du treeview et l'affichage des données(simulées) de bdd.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()
Merci pour votre aide
Cordialement