Skip to content

Commit 0da4d94

Browse files
committed
add slider
1 parent f78160c commit 0da4d94

File tree

1 file changed

+38
-2
lines changed

1 file changed

+38
-2
lines changed

genesis/_main.py

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,46 @@ def __init__(self, master, motors_name, motors_position_limit, motors_position):
3030
self.reset_motors_position()
3131

3232
def create_widgets(self):
33+
container = tk.Frame(self.master)
34+
container.pack(fill=tk.BOTH, expand=True)
35+
36+
canvas = tk.Canvas(container, borderwidth=0, highlightthickness=0)
37+
scrollbar = ttk.Scrollbar(container, orient=tk.VERTICAL, command=canvas.yview)
38+
canvas.configure(yscrollcommand=scrollbar.set)
39+
40+
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
41+
canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
42+
43+
scrollable_frame = tk.Frame(canvas)
44+
window_id = canvas.create_window((0, 0), window=scrollable_frame, anchor="nw")
45+
46+
def on_frame_configure(event):
47+
canvas.configure(scrollregion=canvas.bbox("all"))
48+
49+
def on_canvas_configure(event):
50+
canvas.itemconfig(window_id, width=event.width)
51+
52+
scrollable_frame.bind("<Configure>", on_frame_configure)
53+
canvas.bind("<Configure>", on_canvas_configure)
54+
55+
def on_mousewheel(event):
56+
if event.delta:
57+
canvas.yview_scroll(int(-1 * (event.delta / 120)), "units")
58+
59+
def on_linux_scroll(event):
60+
if event.num == 4:
61+
canvas.yview_scroll(-1, "units")
62+
elif event.num == 5:
63+
canvas.yview_scroll(1, "units")
64+
65+
canvas.bind_all("<MouseWheel>", on_mousewheel)
66+
canvas.bind_all("<Button-4>", on_linux_scroll)
67+
canvas.bind_all("<Button-5>", on_linux_scroll)
68+
3369
for i_m, name in enumerate(self.motors_name):
3470
self.update_joint_position(i_m, self.motors_default_position[i_m])
3571
min_limit, max_limit = map(float, self.motors_position_limit[i_m])
36-
frame = tk.Frame(self.master)
72+
frame = tk.Frame(scrollable_frame)
3773
frame.pack(pady=5, padx=10, fill=tk.X)
3874

3975
tk.Label(frame, text=f"{name}", font=("Arial", 12), width=20).pack(side=tk.LEFT)
@@ -62,7 +98,7 @@ def callback(event):
6298

6399
slider.bind("<Motion>", update_label())
64100

65-
tk.Button(self.master, text="Reset", font=("Arial", 12), command=self.reset_motors_position).pack(pady=20)
101+
tk.Button(scrollable_frame, text="Reset", font=("Arial", 12), command=self.reset_motors_position).pack(pady=20)
66102

67103
def update_joint_position(self, idx, val):
68104
self.motors_position[idx] = float(val)

0 commit comments

Comments
 (0)