bonjour à tous,

je souhaite poser une slider pour un défilement sur l'axe X
Le slider est en place, mais je n'arrive pas à accéder par la souris
quelqu'un à une expérience sur ce cas.
merci d'avance de votre aide
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
 
# coding:utf-8
#version 3.x python
 
# ==================================================
#                                         ID python 3.7.2
# ==================================================
from tkinter import *
import tkinter as tk
from tkinter import ttk
print("TkVersion", TkVersion)
print("TclVersion", TclVersion)
print("Python version", sys.version_info)
import sys; print('Python %s on %s' % (sys.version, sys.platform))
 
# ==================================================
#                                         matplotlib 3.3.3
# ==================================================
from pylab import *                                                                                            # importe tout de matplotlib
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from mpl_toolkits.axes_grid1.anchored_artists import AnchoredAuxTransformBox
from matplotlib.widgets import Slider
 
print("MatPlotLib version : ", matplotlib.__version__)
print('MatPlotLib version : {}'.format(matplotlib.__version__))
 
# ==================================================
#                                  Notebook - Hauteur Largeur
# ==================================================
def _on_tab_changed(event):
	print("\n")
	'''
        update_idletasks
        Python est tkinter peuvent "mettre en sommeil" (idle) certaines tâches d'affichage, non essentielles, par exemple
        le redimensionnement des contrôles. Ces mises à jour de l'affichage sont dîtes dormantes. Pour forcer la mise à jour
        d'un tel affichage, utilisez .update_idletasks ( ) sans attendre la fin du traitement des gestionnaires d’événement et son retour au début de la boucle principale.
        '''
 
	nb = event.widget
	nb.update_idletasks()
 
	tab = nb.nametowidget(nb.select())
 
	nb.configure(height=tab.winfo_reqheight())														# Dimensionnement Hauteur
	nb.configure(width=tab.winfo_reqwidth())													    # Dimensionnement Largeur
 
 
def Create_notebook(master=None, **kw):
	nb = ttk.Notebook(master, **kw)
	nb.bind("<<NotebookTabChanged>>", _on_tab_changed)
	return nb
 
# ==================================================
#                                  Fenêtre Principal - Configuration
# ==================================================
root = tk.Tk()                                                                                                    # Crée une instance Tk class
root.title("Titre")
root.resizable(False, False)                                                                                 # Fenêtre verrouillée
 
window_height = 800
window_width = 900
 
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
 
x_cordinate = int((screen_width/2) - (window_width/2))
y_cordinate = int((screen_height/2) - (window_height/2))
 
root.geometry("{}x{}+{}+{}".format(window_width, window_height, x_cordinate, y_cordinate))
 
# ==================================================
#                                  Frames
# ==================================================
 
# --- Frame gauche ---
RightFrame = tk.LabelFrame(root, text="[Label]", font=('verdana', 8, ''), foreground="blue", relief=SOLID, borderwidth=0)
RightFrame.place(x=130, y=5, width=900, height=900)
RightFrame.anchor(anchor="center")
 
# Notebook
notebook = Create_notebook(RightFrame)
notebook.add(tk.Frame(notebook, bg="white", width=709, height=725, name="1"), text="GRAPH")
notebook.place(x=5, y=5)
 
'''  ===                                          ONGLET 1                                            === '''
 
 
Liste_TEST = [11.81, 4.91, 4.62, 4.19, 4.35, 4.22, 4.03, 4.31, 4.06, 4.23, 4.01, 4.28, 4.06, 3.81, 4.05, 4.04, 4.13, 4.08, 3.99, 4.05, 4.15, 4.26, 4.3, 4.35, 4.77, 4.65, 4.77, 4.52, 4.6, 11.81, 4.91, 4.62, 4.19, 4.35, 4.22, 4.03, 4.31, 4.06, 4.23, 4.01, 4.28, 4.06, 3.81, 4.05, 4.04, 4.13, 4.08, 3.99, 4.05, 4.15, 4.26, 4.3, 4.35, 4.77, 4.65, 4.77, 4.52, 4.6,11.81, 4.91, 4.62, 4.19, 4.35, 4.22, 4.03, 4.31, 4.06, 4.23, 4.01, 4.28, 4.06, 3.81, 4.05, 4.04, 4.13, 4.08, 3.99, 4.05, 4.15, 4.26, 4.3, 4.35, 4.77, 4.65, 4.77, 4.52, 4.6, 11.81, 4.91, 4.62, 4.19, 4.35, 4.22, 4.03, 4.31, 4.06, 4.23, 4.01, 4.28, 4.06, 3.81, 4.05, 4.04, 4.13, 4.08, 3.99, 4.05, 4.15, 4.26, 4.3, 4.35, 4.77, 4.65, 4.77, 4.52, 4.6]
y2 = [1.46,1.51,1.52,1.5,1.56,1.57,1.66,1.65,1.61,1.61,1.61,1.63,1.65,1.65,1.64,1.66,1.63,1.63,1.63,1.61,1.7,1.73,1.73,1.73,1.69,1.72,1.72,1.71,1.74, 1.46,1.51,1.52,1.5,1.56,1.57,1.66,1.65,1.61,1.61,1.61,1.63,1.65,1.65,1.64,1.66,1.63,1.63,1.63,1.61,1.7,1.73,1.73,1.73,1.69,1.72,1.72,1.71,1.74,1.46,1.51,1.52,1.5,1.56,1.57,1.66,1.65,1.61,1.61,1.61,1.63,1.65,1.65,1.64,1.66,1.63,1.63,1.63,1.61,1.7,1.73,1.73,1.73,1.69,1.72,1.72,1.71,1.74, 1.46,1.51,1.52,1.5,1.56,1.57,1.66,1.65,1.61,1.61,1.61,1.63,1.65,1.65,1.64,1.66,1.63,1.63,1.63,1.61,1.7,1.73,1.73,1.73,1.69,1.72,1.72,1.71,1.74]
 
chiffre_inf = IntVar()
chiffre_inf.set(floor(min(Liste_TEST)))                                                   # arrondi au plus bas
chiffre_sup = IntVar()
chiffre_sup.set(ceil(max(Liste_TEST)))                                                  # arrondi au plus haut
print("chiffre_inf", chiffre_inf.get(), "chiffre_sup", chiffre_sup.get())
 
 
# Crée un graphique de 1x1 (Y X) pouces avec une résolution de 96 points par pouce
fig = plt.Figure(figsize=(1, 1), dpi=96)
 
# Adjust the bottom size according to the
# requirement of the user
fig.subplots_adjust(bottom=0.25)
 
# Crée une vue dans une grille de 1 ligne x 1 colonne -- Y  X  GaucheDroite
ax1 = fig.add_subplot(1,1, 1, frameon=True, xlim=(0, len(Liste_TEST)), ylim=(chiffre_inf.get(), chiffre_sup.get()))
 
# Intégration du second axe Y [Right] - make twin axis based on axis X
ax2 = ax1.twinx()
 
# Affiche/Inhibe & Couleur -- Axes XY Haut-Bas - Droite-Gauche
# ['bottom'] ['top']
ax1.spines['bottom'].set_color('none')
ax1.spines['top'].set_color('none')
# ['right'] ['left']
ax2.spines['right'].set_color('#e45cda')   															# couleur rose
ax1.spines['left'].set_color('#FF0000')																	# couleur rouge
 
# Position Axe Y ['left']
ax1.yaxis.set_ticks_position('left')
ax1.spines['left'].set_position(('data', 0))
 
# Couleurs des Echelles de l'axe des abscisses et des deux xes des ordonnées
ax1.tick_params(labelcolor='#FF0000', left=True)
ax2.tick_params(labelcolor='#e45cda', right=True)
 
 
ax1.plot(range(len(Liste_TEST)), Liste_TEST, color="red", linewidth=.85, linestyle="dotted", label='Effective')
ax2.plot(range(len(Liste_TEST)), y2, color='#e45cda', linewidth=.85, linestyle="solid")
 
# Choose the Slider color
slider_color = 'White'
 
# Set the axis and slider position in the plot
# Origine XY = Coin BasGauche --> [Position Origine X, Position Origine Y, Longueur Barre. Largeur Barre]
axis_position = fig.add_axes([0.1, 0.96, 0.65, 0.03], facecolor=slider_color)
# Valeur de Départ - Fin de la Scrollbar
slider_position = Slider(axis_position, 'Pos', 0.1, 90.0)
 
# update() function to change the graph when the
# slider is in use
def update(val):
	pos = slider_position.val
	fig.axis([pos, pos+10, -1, 1])
	fig.canvas.draw_idle()
 
 
# update function called using on_changed() function
slider_position.on_changed(update)
 
graph = FigureCanvasTkAgg(fig, master=notebook.winfo_children()[0])
canvas = graph.get_tk_widget()
canvas.config(width=700, height=570, relief=RIDGE, borderwidth=2)
canvas.place(x=2, y=50)
 
 
root.mainloop()