import tkinter as tk from tkinter import filedialog from tkinter import Label from DataStreamModule import DataStreamModule from HPEModule import HPEModule import threading class PoseEstimationGUI: def __init__(self): self.mp4_file_path = None self.root = tk.Tk() self.root.title("Pose Estimation GUI") self.root.geometry("400x200") self.camera_options = [] # Initialize camera options list # Create a drop-down menu with available cameras self.camera_options = DataStreamModule().findCameras() self.selected_camera = tk.StringVar() self.selected_camera.set(self.camera_options[0]) # default value camera_menu = tk.OptionMenu(self.root, self.selected_camera, *self.camera_options) camera_menu.pack() # Create a button to start pose estimation self.start_button = tk.Button(self.root, text="Start Pose Estimation", command=self.start_pose_estimation) self.start_button.pack() # Create a button to select an mp4 file self.select_file_button = tk.Button(self.root, text="Select MP4 File to Start HPE on", command=self.select_file) self.select_file_button.pack() # Create label widget to indicate file selection status self.file_selected_label = Label(self.root, text="No file selected", fg="red") self.file_selected_label.pack(pady=10) self.root.mainloop() def start_pose_estimation(self): if self.mp4_file_path is not None: # Start pose estimation on the selected mp4 file pose_estimator = HPEModule() pose_thread_file = threading.Thread(target=pose_estimator.startHPEwithCamera, args=(self.mp4_file_path,)) self.mp4_file_path = None self.file_selected_label.config(text="No File selected", fg="red") pose_thread_file.start() else: # Start pose estimation on the selected camera # print(self.selected_camera.get()) pose_estimator = HPEModule() camera = int(self.selected_camera.get()) pose_thread_camera = threading.Thread(target=pose_estimator.startHPEwithCamera, args=(camera,)) pose_thread_camera.start() def select_file(self): self.mp4_file_path = filedialog.askopenfilename(initialdir="/", title="Select MP4 File to Start HPE on", filetypes=(("mp4 files", "*.mp4"), ("all files", "*.*"))) # Update file selection status label if self.mp4_file_path: self.file_selected_label.config(text="File selected", fg="green") else: self.file_selected_label.config(text="No File selected", fg="red") self.mp4_file_path = None if __name__ == '__main__': PoseEstimationGUI()