#!/usr/bin/env python3 """Test liveview avec Tkinter. Lance: DISPLAY=:0 python3 scripts/test_tkinter.py""" import time import io import tkinter as tk from PIL import Image, ImageTk import gphoto2 as gp cam = gp.Camera() cam.init() print("Camera connectee") root = tk.Tk() root.title("Test liveview Tkinter") root.geometry("960x680") root.configure(bg="black") label_img = tk.Label(root, bg="black") label_img.pack() label_info = tk.Label(root, text="Attente...", fg="yellow", bg="black", font=("Arial", 16)) label_info.pack() t_start = time.time() frame_count = 0 premier_frame = None def update(): global frame_count, premier_frame try: t0 = time.time() f = cam.capture_preview() data = bytes(f.get_data_and_size()) dt = time.time() - t0 if premier_frame is None: premier_frame = time.time() - t_start print(f"1ere image en : {premier_frame:.2f}s") img = Image.open(io.BytesIO(data)).resize((960, 640)) photo = ImageTk.PhotoImage(img) label_img.config(image=photo) label_img.image = photo frame_count += 1 fps = frame_count / (time.time() - t_start) label_info.config(text=f"FPS: {fps:.1f} frame: {dt*1000:.0f}ms frames: {frame_count}") except Exception as e: print(f"Erreur: {e}") root.quit() return root.after(33, update) # ~30fps root.after(100, update) root.mainloop() cam.exit() print(f"Total: {frame_count} frames")