48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
import tkinter as tk
|
|
from tkinter import ttk
|
|
from datetime import datetime
|
|
|
|
class LogWindow(tk.Toplevel):
|
|
def __init__(self, parent):
|
|
super().__init__(parent)
|
|
self.title("Log")
|
|
self.geometry("600x400")
|
|
self.protocol("WM_DELETE_WINDOW", self.withdraw) # Hide on close
|
|
|
|
log_container = tk.Frame(self)
|
|
log_container.pack(fill="both", expand=True, padx=10, pady=10)
|
|
|
|
self.log_text = tk.Text(
|
|
log_container,
|
|
wrap=tk.WORD,
|
|
font=("Consolas", 9),
|
|
bg="#1e1e1e",
|
|
fg="#d4d4d4",
|
|
insertbackground="white",
|
|
selectbackground="#264f78",
|
|
)
|
|
|
|
log_scrollbar = ttk.Scrollbar(
|
|
log_container, orient="vertical", command=self.log_text.yview
|
|
)
|
|
self.log_text.configure(yscrollcommand=log_scrollbar.set)
|
|
|
|
self.log_text.pack(side="left", fill="both", expand=True)
|
|
log_scrollbar.pack(side="right", fill="y")
|
|
|
|
self.withdraw() # Start hidden
|
|
|
|
def log_message(self, message):
|
|
"""Add message to log"""
|
|
timestamp = datetime.now().strftime("%H:%M:%S")
|
|
log_entry = f"[{timestamp}] {message}\n"
|
|
self.log_text.insert(tk.END, log_entry)
|
|
self.log_text.see(tk.END)
|
|
self.log_text.update()
|
|
|
|
def toggle(self):
|
|
if self.winfo_viewable():
|
|
self.withdraw()
|
|
else:
|
|
self.deiconify()
|