| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import logging
- import queue
- import signal
- from tkinter import HORIZONTAL, VERTICAL, messagebox, ttk
- from qhandler import QueueHandler
- from ui.console import ConsoleUi
- from ui.forms import FormUi
- from ui.status import StatusUi
- logger = logging.getLogger('simsdt')
- class App:
- def __init__(self, root):
- self.root = root
- # Queue a nivel de App para manejar el progress bar
- pbqueue = queue.Queue()
- log_queue = queue.Queue()
- self.queue_handler = QueueHandler(log_queue)
- formatter = logging.Formatter(
- '%(asctime)s: %(message)s', datefmt='%Y-%m-%dT%H:%M:%S')
- self.queue_handler.setFormatter(formatter)
- # self.queue_handler.setLevel(logging.INFO)
- logger.addHandler(self.queue_handler)
- root.title('SimSDT')
- root.iconbitmap("app.ico")
- root.columnconfigure(0, weight=1)
- root.rowconfigure(0, weight=1)
- # root.geometry("1080x960")
- # Create the panes and frames
- vertical_pane = ttk.PanedWindow(
- self.root, orient=VERTICAL)
- vertical_pane.grid(row=0, column=0, sticky="nsew", padx=10, pady=10)
- main_title = ttk.Label(
- vertical_pane,
- text='Simulación de Subastas de Derechos de Transmisión',
- font=('', '20', 'bold'), padding=(0, 5))
- vertical_pane.add(main_title, weight=0)
- horizontal_pane = ttk.PanedWindow(vertical_pane, orient=HORIZONTAL)
- vertical_pane.add(horizontal_pane, weight=1)
- form_frame = ttk.Labelframe(
- horizontal_pane, text="Configuración", padding=(5, 5))
- form_frame.columnconfigure(1, weight=1)
- horizontal_pane.add(form_frame, weight=1)
- console_frame = ttk.Labelframe(
- horizontal_pane, text="Consola", padding=(5, 5))
- console_frame.columnconfigure(0, weight=1)
- console_frame.rowconfigure(0, weight=1)
- horizontal_pane.add(console_frame, weight=1)
- third_frame = ttk.Labelframe(
- vertical_pane, text="Estado", padding=(5, 5))
- vertical_pane.add(third_frame, weight=0)
- # Initialize all frames
- self.form = FormUi(form_frame, pbqueue)
- self.console = ConsoleUi(console_frame, log_queue, self.queue_handler)
- self.third = StatusUi(third_frame, pbqueue)
- self.root.protocol('WM_DELETE_WINDOW', self.quit)
- self.root.bind('<Control-q>', self.quit)
- signal.signal(signal.SIGINT, self.quit)
- def quit(self, *args):
- msg = 'Se esta ejecutando un proceso de optimización\n\n'
- msg += '¿Desea salir de la aplicación?'
- if self.form.runsdt_thread and self.form.runsdt_thread.is_alive():
- if messagebox.askokcancel("Salir de SimSDT", msg):
- logger.info('Cerrando aplicacion SimSDT')
- self.form.runsdt_thread.stop()
- self.root.destroy()
- else:
- logger.info('Saliendo de la aplicacion')
- self.root.destroy()
|