Bonjour,
J'ai un petit souci esthétique avec grid de tkinter.
Je souhaiterais que mon label et le champ qui est dessous occupe la place sous le bouton "quitter" (colonne 1) alors qu'il prend toute la largeur, c'est-à-dire colonnes 1 et 2.
Pouvez-vous me donner un coup de main ?

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
import os
import tkinter as tk
from tkinter.scrolledtext import ScrolledText
from tkinter import filedialog
 
cpt = ""
def choisir_dossier ():
    global rep
    "ouvre un dialogue de sélection de répertoire"
    rep = filedialog.askdirectory(
        title="Sélectionnez un répertoire",
        mustexist=True,
        parent=fenetre,
    )
    if rep:
        # print(rep)
        remplir_liste(rep)
 
 
def remplir_liste (dossier):
    cvar_fichiers.set(os.listdir(dossier))
 
def afficher_fichier (event):
    os.path.join(rep,liste_fichiers.get(liste_fichiers.curselection()))
 
 
ext=".tex"
 
 
 
 
 
def recherche_titre(chaine, path, extension):
    global cpt
    """recherche un mot dans le nom des fichiers"""
    affichage_texte.delete('1.0',tk.END)
    affichage_texte.tag_config('red',foreground='red')
    affichage_texte.insert("1.0", "Démarrage de la recherche \n",'red')
    cpt = 0
    for root, directories, files in os.walk(path):  
        for file in files:
            if file.endswith(extension):
                try:
                    if chaine.lower() in file.lower():
                        affichage_texte.insert("insert", os.path.join(root,file)+"\n")
                        cpt = cpt + 1
                except UnicodeDecodeError:
                        affichage_texte.insert("insert","Pb d'encodage :", os.path.join(root,file))
                        pass
 
    affichage_texte.insert("insert", "total de %s fichiers %s \n" %(str(cpt),extension),'red')
    # print(mot, "présent dans le nom de", cpt, "fichiers", extension)
 
 
# fenêtre principale
fenetre = tk.Tk()
fenetre.title("Compilation de fichiers .tex")
conteneur_fichiers = tk.Frame(fenetre)
# conteneur redimensionnable
conteneur_fichiers.columnconfigure(0, weight=1)
conteneur_fichiers.rowconfigure(1, weight=1)
# étiquette texte dans ce conteneur
tk.Label(
    conteneur_fichiers,
    text="--------------------------------"
).grid(row=0, column=0, sticky=tk.EW)
# liste des fichiers
cvar_fichiers = tk.StringVar()
liste_fichiers = tk.Listbox(conteneur_fichiers, listvariable=cvar_fichiers)
liste_fichiers.grid(row=1, column=0, sticky=tk.NS+tk.EW)
# avec sa scrollbar
vbar_fichiers = tk.Scrollbar(conteneur_fichiers, orient=tk.VERTICAL)
vbar_fichiers.grid(row=1, column=1, sticky=tk.NS+tk.EW)
# connection de la scrollbar à la liste des fichiers
liste_fichiers.configure(yscrollcommand=vbar_fichiers.set)
vbar_fichiers.configure(command=liste_fichiers.yview)
# affichage des dossiers sur simple clic
# sur un dossier de la liste
liste_fichiers.bind("<ButtonRelease-1>", afficher_fichier)
# bouton de type 'Parcourir'
tk.Button(
    conteneur_fichiers,
    text="Cliquer ICI pour sélectionner un dossier",
    command=choisir_dossier,
).grid(row=0, column=0)
# on place le conteneur dans la fenêtre principale
# avec des marges padx et pady
conteneur_fichiers.grid(row=0, column=0, sticky=tk.NS+tk.EW, padx=5, pady=5)
# on crée un conteneur pour l'affichage
conteneur_affichage = tk.Frame(fenetre)
# on rend le conteneur redimensionnable
conteneur_affichage.columnconfigure(0, weight=1)
conteneur_affichage.rowconfigure(1, weight=1)
# on crée une étiquette texte dans ce conteneur
tk.Label(
    conteneur_affichage,
    text="Présent ici : "
).grid(row=0, column=1, sticky=tk.EW)
 
 
label_rech=tk.Label(fenetre,text="A rechercher")
label_rech.grid(row=4,column=1,sticky=tk.NS+tk.EW)
mot = tk.StringVar(fenetre)
mot.set("")
entree = tk.Entry(fenetre, textvariable=mot, width=30)
entree.grid(row=5,column=1,sticky=tk.NS+tk.EW)
 
# on crée la zone d'affichage de texte
affichage_texte = ScrolledText(
    conteneur_affichage,
    bg="white",
    fg="blue",
    font="sans 9 bold",
    height=25,
    width=100,
)
affichage_texte.grid(row=0, column=2, sticky=tk.NS+tk.EW)
 
 
# on ajoute un bouton 'recherche_mot titre'
tk.Button(
    conteneur_affichage,
    text="Recherche mot dans les noms de fichier",
    command=lambda: recherche_titre(mot.get(),rep,ext)
).grid(row=8, column=1, sticky=tk.NS+tk.EW)
# on ajoute un bouton 'quitter'
tk.Button(
    conteneur_affichage,
    text="Quitter",
    command=fenetre.destroy
).grid(row=9, column=1, sticky=tk.NS+tk.EW)
# on place le conteneur dans la fenêtre principale
# avec des marges padx et pady
conteneur_affichage.grid(row=0, column=1, sticky=tk.NS+tk.EW, padx=3, pady=3)
# on rend la fenêtre redimensionnable
fenetre.rowconfigure(0, weight=1)
fenetre.columnconfigure(1, weight=1)
 
 
remplir_liste("./")
 
# pour finir
# on lance la boucle événementielle principale
fenetre.mainloop()