#!/usr/bin/env python3 """ Test script to verify window centering functionality """ import tkinter as tk import sys import os sys.path.append('tkinter_app/src') from tkinter_simple_player import SettingsWindow, SimpleMediaPlayerApp def test_settings_centering(): """Test settings window centering""" root = tk.Tk() root.withdraw() # Hide main window # Create a mock app object class MockApp: def __init__(self): self.playlist = [] self.current_index = 0 def play_current_media(self): print('play_current_media called') app = MockApp() # Test settings window centering try: print("Testing settings window centering...") settings = SettingsWindow(root, app) # Get screen dimensions screen_width = settings.window.winfo_screenwidth() screen_height = settings.window.winfo_screenheight() # Get window position settings.window.update_idletasks() window_x = settings.window.winfo_x() window_y = settings.window.winfo_y() window_width = 900 window_height = 700 # Calculate expected center position expected_x = (screen_width - window_width) // 2 expected_y = (screen_height - window_height) // 2 print(f"Screen size: {screen_width}x{screen_height}") print(f"Window position: {window_x}, {window_y}") print(f"Expected center: {expected_x}, {expected_y}") print(f"Window size: {window_width}x{window_height}") # Check if window is roughly centered (allow some margin for window decorations) margin = 50 is_centered_x = abs(window_x - expected_x) <= margin is_centered_y = abs(window_y - expected_y) <= margin if is_centered_x and is_centered_y: print("โœ… Settings window is properly centered!") else: print("โŒ Settings window centering needs adjustment") # Keep window open for 3 seconds to visually verify root.after(3000, root.quit) root.mainloop() except Exception as e: print(f"โŒ Error testing settings window: {e}") def test_exit_dialog_centering(): """Test exit dialog centering""" print("\nTesting exit dialog centering...") # Create a simple test for the centering function root = tk.Tk() root.withdraw() # Create a test dialog dialog = tk.Toplevel(root) dialog.title("Test Exit Dialog") dialog.geometry("400x200") dialog.configure(bg='#2d2d2d') dialog.resizable(False, False) # Test the centering logic dialog.update_idletasks() screen_width = dialog.winfo_screenwidth() screen_height = dialog.winfo_screenheight() dialog_width = 400 dialog_height = 200 # Calculate center position center_x = int((screen_width - dialog_width) / 2) center_y = int((screen_height - dialog_height) / 2) # Ensure the dialog doesn't go off-screen center_x = max(0, min(center_x, screen_width - dialog_width)) center_y = max(0, min(center_y, screen_height - dialog_height)) dialog.geometry(f"{dialog_width}x{dialog_height}+{center_x}+{center_y}") dialog.lift() # Add test content tk.Label(dialog, text="๐ŸŽฌ Test Exit Dialog", font=('Arial', 16, 'bold'), fg='white', bg='#2d2d2d').pack(pady=20) tk.Label(dialog, text="This dialog should be centered on screen", font=('Arial', 12), fg='white', bg='#2d2d2d').pack(pady=10) # Get actual position dialog.update_idletasks() actual_x = dialog.winfo_x() actual_y = dialog.winfo_y() print(f"Screen size: {screen_width}x{screen_height}") print(f"Dialog position: {actual_x}, {actual_y}") print(f"Expected center: {center_x}, {center_y}") # Check centering margin = 50 is_centered_x = abs(actual_x - center_x) <= margin is_centered_y = abs(actual_y - center_y) <= margin if is_centered_x and is_centered_y: print("โœ… Exit dialog is properly centered!") else: print("โŒ Exit dialog centering needs adjustment") # Close dialog after 3 seconds root.after(3000, root.quit) root.mainloop() if __name__ == "__main__": print("๐Ÿงช Testing Window Centering Functionality") print("=" * 50) test_settings_centering() test_exit_dialog_centering() print("\nโœ… Centering tests completed!") print("\nThe windows should appear centered on your screen regardless of resolution.") print("This works for any screen size: 1024x768, 1920x1080, 4K, etc.")