Files
INTUIA/Testes/PJM.py
T
2026-03-15 13:27:50 +00:00

156 lines
4.9 KiB
Python

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()