changes
This commit is contained in:
143
test_centering.py
Normal file
143
test_centering.py
Normal file
@@ -0,0 +1,143 @@
|
||||
#!/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.")
|
||||
Reference in New Issue
Block a user