-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpreviewMovementView.py
More file actions
85 lines (73 loc) · 2.95 KB
/
previewMovementView.py
File metadata and controls
85 lines (73 loc) · 2.95 KB
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
# Minhas Kamal (minhaskamal024@gmail.com)
# 14 Mar 24
import tkinter as tk
import jointSelectorView
import movement
import utils
class PreviewMovementView:
@classmethod
def show(cls, view_frame: tk.Frame, doctor_movement: movement.Movement) -> None:
view_frame.name = cls.__name__
tk.Label(
view_frame,
text="Preview").pack(
pady=(10, 0))
preview_frame: tk.Frame = tk.Frame(view_frame)
preview_frame.pack(pady=(0, 5))
joint_selector_frame: tk.Frame = tk.Frame(preview_frame)
joint_selector_frame.pack(side=tk.LEFT, padx=10)
jointSelectorView.JointSelectorView.show(joint_selector_frame, doctor_movement)
tk.Label(preview_frame, text="Resting pose").pack(pady=(10, 0))
cls._load_image(preview_frame, doctor_movement.resting_pose_image)
tk.Label(preview_frame, text="Flexing pose").pack(pady=(10, 0))
cls._load_image(preview_frame, doctor_movement.flexing_pose_image)
input_frame: tk.Frame = tk.Frame(view_frame)
input_frame.pack(pady=(5, 0))
tk.Label(
input_frame,
text="Name of movement").pack(
side=tk.LEFT,
pady=5)
cls._create_entry(
input_frame, doctor_movement.name, doctor_movement, cls._record_movement_name)
return
@classmethod
def _load_image(cls, frame: tk.Frame, img) -> None:
label: tk.Label = tk.Label(frame, borderwidth=2, relief="solid")
if img is not None:
label.imgtk = utils.get_scaled_imgtk(img, 180)
label.configure(image=label.imgtk)
else:
label.configure(text='No pose img found')
label.pack(padx=5)
@classmethod
def _create_entry(
cls, frame: tk.Frame, value, doctor_movement: movement.Movement, record_func) -> None:
entry: tk.Entry = tk.Entry(frame)
entry.insert(0, str(value))
entry.pack(side=tk.LEFT, pady=5)
entry.bind(
'<KeyRelease>', lambda event:
record_func(entry, doctor_movement))
@classmethod
def _record_movement_name(
cls, name_of_movement_entry: tk.Entry, doctor_movement: movement.Movement) -> None:
doctor_movement.name = name_of_movement_entry.get()
return
# test
if __name__ == "__main__":
ui = tk.Tk()
ui.option_add("*Font", ('Arial', 12))
ui.option_add("*Background", "#fff")
view_frame = tk.Frame(ui)
view_frame.pack(fill="both")
doctor_movement = movement.Movement.from_file("res/RightElbow_Flexion_20240415153025")
PreviewMovementView.show(view_frame, doctor_movement)
button_frame = tk.Frame(ui, bg='#eee')
button_frame.pack(pady=10)
cancel_button = tk.Button(button_frame, text="Cancel")
cancel_button.pack(side=tk.LEFT, padx=10)
action_button = tk.Button(button_frame, text="Save")
action_button.pack(side=tk.LEFT, padx=10)
ui.mainloop()
print(doctor_movement)