import tkinter as tk from tkinter import Menu, messagebox, filedialog import cv2 from PIL import Image, ImageTk import os def validar_login(): user = userdig.get() password = passdig.get() if user == "admin" and password == "12345": login.destroy() abre_janela_principal() else: messagebox.showerror("Erro", "Usuário ou senha incorretos!") is_playing = False video_position = 0 cap = None def abre_janela_principal(): janela_principal = tk.Tk() janela_principal.title("Kl3z - PJ- AI") janela_principal.geometry('800x500') menu_bar = Menu(janela_principal) carregar_menu = Menu(menu_bar, tearoff=0) carregar_menu.add_command(label="Carregar vídeo", command=carregar_video) carregar_menu.add_command(label="Carregar áudio", command=carregar_audio) carregar_menu.add_separator() carregar_menu.add_command(label="Sair", command=janela_principal.destroy) menu_bar.add_cascade(label="Carregar informação", menu=carregar_menu) Relatorios = Menu(menu_bar, tearoff=0) Relatorios.add_command(label="Inserir") menu_bar.add_cascade(label="Relatórios", menu=Relatorios) Opcoes = Menu(menu_bar, tearoff=0) Opcoes.add_command(label="Definições") Opcoes.add_command(label="Definições2") menu_bar.add_cascade(label="Opções", menu=Opcoes) janela_principal.config(menu=menu_bar) global video video = tk.Label(janela_principal, bg='black') video.pack(expand=True, fill=tk.BOTH) video.place(x=50, y=50, width=500, height=300) control_frame = tk.Frame(janela_principal) control_frame.pack(pady=20) play_button = tk.Button(control_frame, text="Play", command=play_video) play_button.grid(row=0, column=0, padx=5) pause_button = tk.Button(control_frame, text="Pause", command=pause_video) pause_button.grid(row=0, column=1, padx=5) stop_button = tk.Button(control_frame, text="Stop", command=stop_video) stop_button.grid(row=0, column=2, padx=5) forward_button = tk.Button(control_frame, text="Forward", command=forward_video) forward_button.grid(row=0, column=3, padx=5) backward_button = tk.Button(control_frame, text="Backward", command=backward_video) backward_button.grid(row=0, column=4, padx=5) var1 = tk.BooleanVar() var2 = tk.BooleanVar() var3 = tk.BooleanVar() check_button1 = tk.Checkbutton(control_frame, text="Analises de expressões", variable=var1) check_button1.grid(row=0, column=5, padx=10) check_button2 = tk.Checkbutton(control_frame, text="Analises de texto", variable=var2) check_button2.grid(row=0, column=6, padx=10) check_button3 = tk.Checkbutton(control_frame, text="Conversão de audio para texto", variable=var3) check_button3.grid(row=0, column=7, padx=10) check_button4 = tk.Checkbutton(control_frame, text="Análise de som", variable=var3) check_button4.grid(row=0, column=7, padx=10) janela_principal.mainloop() def carregar_video(): global video_caminho, cap, is_playing video_caminho = filedialog.askopenfilename(title="Selecione um vídeo", filetypes=[("Vídeos", "*.mp4;*.avi;*.mov")]) if video_caminho: cap = cv2.VideoCapture(video_caminho) is_playing = True update_frame() def update_frame(): global is_playing, cap if cap is not None and is_playing: ret, frame = cap.read() if ret: frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) frame = cv2.resize(frame, (500, 300)) img = Image.fromarray(frame) imgtk = ImageTk.PhotoImage(image=img) video.imgtk = imgtk video.configure(image=imgtk) video.after(20, update_frame) else: cap.release() def play_video(): global is_playing is_playing = True update_frame() def pause_video(): global is_playing is_playing = False def stop_video(): global is_playing, cap is_playing = False cap.release() video.configure(image='') def forward_video(): global cap if cap is not None: current_position = cap.get(cv2.CAP_PROP_POS_MSEC) cap.set(cv2.CAP_PROP_POS_MSEC, current_position + 5000) def backward_video(): global cap if cap is not None: current_position = cap.get(cv2.CAP_PROP_POS_MSEC) cap.set(cv2.CAP_PROP_POS_MSEC, max(0, current_position - 5000)) def carregar_audio(): audio = filedialog.askopenfilename(title="Selecione um ficheiro áudio", filetypes=[("Áudios", "*.mp3;*.wav;*.ogg")]) if audio: os.startfile(audio) login = tk.Tk() login.title("Login") login.geometry("300x200") label_usuario = tk.Label(login, text="Usuário:") label_usuario.pack(pady=5) userdig = tk.Entry(login) userdig.pack(pady=5) label_senha = tk.Label(login, text="Senha:") label_senha.pack(pady=5) passdig = tk.Entry(login, show="*") passdig.pack(pady=5) botao_login = tk.Button(login, text="Login", command=validar_login) botao_login.pack(pady=20) login.mainloop()