Bonjour,

Je n'arrive pas à créer une barre de défilement verticale sur un canvas avec Tkinter. J'utilise grid() pour afficher mes widgets.

Pourriez-vous m'indiquer mon erreur ? En vous remerciant !!!

Voici mon code :

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
import tkinter
from tkinter.font import Font
 
Police_titre = ("arial", 18, "bold")
 
fic = open("Data_form_saisie_livre.txt", "r")
data = fic.readlines()
 
 
fenetrel = tkinter.Tk()
fenetrel.configure(bg="grey")
 
canvas = tkinter.Canvas(fenetrel, width=450, height=600, background='grey')
canvas.grid(row=0, column=0)
scrollbar = tkinter.Scrollbar(canvas, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=scrollbar.set)
scrollbar.grid(column=2, sticky="ns")
 
label_titre_fenetre = tkinter.Label(canvas, text = "Saisir un livre", bg="grey", pady="10", font=Police_titre, fg="white")
label_titre_fenetre.grid(row=0, column=0, columnspan=2, sticky="we")
 
rw = 0
for ligne in data:
    rw = rw+2
    lim=ligne.index("?")
    var = ligne[lim+1:]
    var_label = "label_" + ligne[:lim]
    print(var)
 
    if var == "secteur\n":
        var_label = tkinter.Label(canvas, text=ligne[:lim], bg="grey", pady="5")
        var = tkinter.Text(canvas, width=30)
        var_label.grid(row=rw, column=0, sticky="E", padx=5)
        var.grid(row=rw, column=1, sticky="W", padx=10)
    else:
        var_label = tkinter.Label(canvas, text = ligne[:lim], bg="grey", pady="5")
        var = tkinter.Entry(canvas, width=30)
        var_label.grid(row=rw, column=0, sticky="E", padx=5)
        var.grid(row=rw, column=1, sticky="W", padx=10)
 
fenetrel.mainloop()
fic.close()