Bonjour, j'ai le code suivant (qui permet de lier une fenêtre avec la molette de la souris) et je voudrais savoir comment je peut appeler à l'execution de la classe Scroll dans un bouton (dernière ligne du code) ? Lorsque j'execute ce code ça met énormément de temps et ça fait presque planter mon ordi.
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
 
from tkinter import *
import numpy as np
root = Tk()
....
class Scroll():
 
    def __init__(self):
        # Fonction permettant de lier le déplacement de la fenêtre avec la molette de la souris
        def scrollEvent(event):
            print(event.delta)
            if event.delta >0:
                print('déplacement vers le haut')
                self.liste.yview_scroll(-2,'units')
            else:
                print('déplacement vers le bas')
                self.liste.yview_scroll(2,'units')
        # Lorsque l'on rentre dans la fenêtre, on active la molette
        def enrEnter(event):
            self.bind('<MouseWheel>', scrollEvent)
        # Lorsque l'on sort de la fenêtre, on désactive la liaison avec la molette
        def enrLeave(event):
            self.unbind('<MouseWheel>')
 
        self.bind('<Enter>',enrEnter)
        self.bind('<Leave>',enrLeave)
 
# Création de la fenêtre principale
    self = Toplevel(root)
    self.geometry('400x350+400-520')
    # Création de la scrollbar
    self.scroll=Scrollbar(self,orient=VERTICAL)
    self.scroll.grid(row=0,column=1,sticky=N+S)
    self.scroll1=Scrollbar(self,orient=HORIZONTAL)
    self.scroll1.grid(row=1,column=0,sticky=E+W)
    # Création du canevas qui contient la frame qui contient les boutons
    self.liste =Canvas(self,yscrollcommand=self.scroll.set,xscrollcommand=self.scroll1.set)
 
    self.grid_columnconfigure(0,weight=1)
    self.grid_rowconfigure(0,weight=1)
 
    # Création de la frame, dans le canevas
    self.listeBout=Frame(self.liste)
    #Création du contenu 
    input = open('precipitation_diffusion_input_nom.txt','rt')
    for ligne in input.read().splitlines():
        ligne=ligne.split()
        label=Label(self.listeBout,text=ligne)
        label.grid(sticky=N)
        ce=np.loadtxt('precipitation_diffusion_input_data.txt',dtype=float)
        list=[]
        for i in range(91):
            for j in range(1):
                var_float2 = DoubleVar(self.listeBout, ce[i])
                ent = Entry(self.listeBout, textvariable= var_float2,width=4)
                ent.grid(row=i,column=j+1)
                list.append(ent)
        #for ligne in input.read().splitlines():
    #ligne=ligne.split()
    #label=Label(self.listeBout,text=ligne)
    #label.grid(row=0,column=0,rowspan=91)
    # Pack du canevas
    self.liste.grid(row=0,column=0)
    # Configuration de la scrollbar
    self.scroll.config(command=self.liste.yview)
    self.scroll1.config(command=self.liste.xview)
    # Positionnement du canevas au début
    self.liste.create_window(0,0,window=self.listeBout)
    self.listeBout.update_idletasks()
    self.liste.config(scrollregion=self.liste.bbox('all'))
    self.liste.yview_moveto(0)
    self.liste.xview_moveto(0)
 
    self.transient(root)
 
 
    barreDefil=Scroll()
 
 
btn = Button(root, text="PRECIPITATION_DIFFUSION_input\n default data",command=Scroll,font=(None, 12)).grid(column=0,row=22)
Est-ce qu'il y a aussi des incohérences dans le code ? Et je voudrais aussi agrandir la fenêtre du canevas j'ai essayer plusieurs chose mais sans succès.