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) |
Partager