Bonjour à tous,

Tout d'abord, veuillez m'excusez si un sujet similaire existe déjà mais je ne l'ai pas trouvé.

Voilà mon problème, j'ai défini un Canvas dans lequel je définis une nouvelle frame afin de pouvoir associer des Scrollbars et ainsi m'adapter à la taille de ma fenêtre.
J'arrive à inclure mes données dans le Canvas, à définir mes scrollbars qui s'adaptent correctement à la taille de la fenêtre. Malheureusement dans le cas où ma fenêtre est plus petite que les données qu'elle contient en largeur, le scrolling horizontale deplace correctement la fenêtre mais n'affiche pas les données "masquées", concrètement j'ai des données tronquées.
Evidemment, je fais une erreur ou j'oublie quelque chose mais je n'arrive pas à voir quoi alors j'espère que vous pourrez m'aider.

D'avance merci,

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
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
 
from Tkinter import *
from ttk import *
from PIL import Image, ImageTk
 
 
List_Param_Nom = ['File_Name', 'N_tir', 'Frequency', 'Cycle', 'Mode', 'SumGain', 'Filter', 'T_First', 'R_First', 'ED', 'LD', 'M_Velocity', 
             'FL_Gain', 'Amplitude', 'P_Width', 'S_Angle', 'Thick_W', 'Angle', 'Width_B', 'Width_R', 'Face_R', 'Radius_B', 'Radius_D', 'N_ActiveElements', 
             'P_elt_gap', 'P_elt_length', 'P_length', 'P_elt_width', 'W_angle', 'W_height', 'W_velocity', 'Roof_angle', 
             'P_distance', 'Scan_Offset', 'Index_Offset', 'N_seg', 'Depth_min', 'Depth_max']
 
List_Param_ref = ['C:/Users/cfaderne/Desktop/loi_retard/J_Bevel/Olympus_J_Bevel', 6, 1000, 1, 1, -1, 0, 1, 1, 1700, 0, 3246, 0, 180, 50, 0, 100, 5, 13.5, 0, 10, 10, 20, 60, 0.08, 0.92,
                  59.92, 10, 33.7, 27.843, 2337, 0, 0, -80000, 0, 3, -90, -40]
 
List_def = ["Filename (without extension)", "Number of shots per focusing segments", "Probe frequency (dedicated to EMAT)", "Cycle number (dedicated to EMAT)",
"Inspection mode -> 0 = T/R, 1 = Pulse-Echo", "Gain applied to signal (default value = -1)", "Frequency filter #0 = 0.5 - 20MHz / #1 = 0.5 - 5MHz / #2 = 2 - 10MHz / #3 = 5 - 15MHz",
"First emitting element", "First receiving element", "Delay due to electronic (1700 for FOCUS and Tomoscan) in ns", "Delay applied on delay laws (Offset ?) in ns",
"Material velocity in m/s", "Gain per channel in dB (0 - 80)", "Excitation amplitude per channel in V (50 - 200)", "Pulse width in ns (50 - 500)", "Skew angle in tenth of degree",
"Wall thickness in mm", "Bevel angle in degree", "Bevel Width in mm", "Root Width in mm", "Root Face in mm", "J radius in mm", "Center of the J radius in mm", "Amount of active element per channel", "Interelement gap in mm",
"Element length in mm", "Active zone length in mm", "Active zone width in mm", "Wedge angle in degree", "Wedge height in mm",
"Wedge material velocity in m/s", "Roof angle (in case of T/R, otherwise put 0) in degree", "Side to side distance (in case of T/R, otherwise put 0) en mm",
"Exit point abcissa in microns", "Exit point ordinate in microns", "Number of focusing segments", "Minimal focusing depth, negative value in mm",
"Maximal focusing depth, negative value in mm"]
 
dicimg2 = {}
 
class ScrolledFrame(Frame):
 
    def __init__(self, parent):
        Frame.__init__(self, parent)            
 
        yvscrollbar = Scrollbar(self, orient=VERTICAL)
        yvscrollbar.pack(fill=Y, side=RIGHT, expand=FALSE)
        xvscrollbar = Scrollbar(self, orient=HORIZONTAL)
        xvscrollbar.pack(fill=X, side=BOTTOM, expand=FALSE)
        canvas = Canvas(self, bd=0, highlightthickness=0, xscrollcommand=xvscrollbar.set, yscrollcommand=yvscrollbar.set)
        canvas.pack(side=LEFT, fill=BOTH, expand=TRUE)
        yvscrollbar.config(command=canvas.yview)
        xvscrollbar.config(command=canvas.xview)
        canvas.xview_moveto(0)
        canvas.yview_moveto(0)
 
        self.interior = interior = Frame(canvas)
        interior_id = canvas.create_window(0, 0, window=interior, anchor=NW)
 
        def _configure_interior(event):
 
            size = (interior.winfo_reqwidth(), interior.winfo_reqheight())
            canvas.config(scrollregion="0 0 %s %s" % size)
            if interior.winfo_reqwidth() != canvas.winfo_width():
                canvas.config(width=interior.winfo_reqwidth())
            if interior.winfo_reqheight() != canvas.winfo_reqheight():
                canvas.config(height=interior.winfo_reqheight())
        interior.bind('<Configure>', _configure_interior)
 
        def _configure_canvas(event):
            if interior.winfo_reqwidth() != canvas.winfo_width():
                canvas.itemconfigure(interior_id, width=canvas.winfo_width())
            if interior.winfo_reqheight() != canvas.winfo_reqheight():
                canvas.itemconfigure(interior_id, height=canvas.winfo_reqheight())
        canvas.bind('<Configure>', _configure_canvas)
 
 
class SampleApp(Tk):
    def __init__(self):
        root = Tk.__init__(self)
 
 
        self.frame = ScrolledFrame(root)
        self.frame.pack()
        self.frame.interior.entries = []
        i = 0
        for values in List_Param_Nom:
            if values == 'File_Name':
                label = Label(self.frame.interior, text="Delay law file parameters")
                label.grid(row=i, columnspan=3)
                i = i+1
 
            elif values == 'Thick_W':
                label = Label(self.frame.interior, text="Bevel geometry characteristics")
                label.grid(row=i, columnspan=3)
                i = i+1
 
            elif values == 'N_ActiveElements':
                label = Label(self.frame.interior, text="Probe characteristics")
                label.grid(row=i, columnspan=3)
                i = i+1
 
            elif values == 'W_angle':
                label = Label(self.frame.interior, text="Wedge characteristics")
                label.grid(row=i, columnspan=3)
                i = i+1
 
            elif values == 'Scan_Offset':
                label = Label(self.frame.interior, text="Inspection geometry characteristics")
                label.grid(row=i, columnspan=3)
                i = i+1
 
            label = Label(self.frame.interior, text=values)
            label.grid(row=i, column=0)
            a = List_Param_Nom.index(values)
            label = Label(self.frame.interior, text=List_def[a])
            label.grid(row=i, column=2)
            entry = Entry(self.frame.interior, width=60)
            entry.grid(row=i, column=1)
            valeurs_def = str(List_Param_ref[a])
            entry.insert(0, valeurs_def)
            self.frame.interior.entries.append(entry)
            i = i+1
 
        self.frame.interior.quit_button = Button(self.frame.interior, text='Quit', command=self.quit)
        self.frame.interior.quit_button.grid(row=i, column=2)
 
 
app = SampleApp()
app.mainloop()
app.destroy()