-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
66 lines (55 loc) · 2.22 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import tkinter as tk
import customtkinter as ctk
import logging
import argparse
from CTkMessagebox import CTkMessagebox
from ui.main_window import MainWindow
from utils.logging_config import setup_logging
from utils.decorators import debug_log
@debug_log
def main():
"""Initialize and start the application"""
try:
# Set up argument parser
parser = argparse.ArgumentParser()
parser.add_argument('--debug', action='store_true', help='Enable debug mode')
args = parser.parse_args()
# Initialize logging
setup_logging(debug_mode=args.debug)
logging.debug("Logging system initialized")
# Create root window with detailed logging
logging.debug("Starting root window creation")
root = ctk.CTk()
logging.debug("Root window created successfully")
# Initialize main application with detailed logging
logging.debug("Starting MainWindow initialization")
app = MainWindow(root)
app.debug_var.set(args.debug)
logging.debug("MainWindow initialization complete")
# Set up window closing handler
logging.debug("Setting up window closing handler")
def on_closing():
try:
logging.debug("Application closing initiated")
if hasattr(app, 'dropdown_checker'):
logging.debug("Canceling pending callbacks")
root.after_cancel(app.dropdown_checker)
logging.debug("Destroying root window")
root.destroy()
except Exception as e:
logging.error(f"Error during window closing: {e}", exc_info=True)
root.protocol("WM_DELETE_WINDOW", on_closing)
logging.debug("Window closing handler setup complete")
# Start main loop
logging.debug("Starting main application loop")
root.mainloop()
except Exception as e:
logging.error(f"Application startup failed: {e}", exc_info=True)
CTkMessagebox(
title="Error",
message="Application failed to start. Check logs for details.",
icon="cancel"
)
raise
if __name__ == "__main__":
main()