import tkinter as tk from tkinter.ttk import Progressbar import logHandler class LogScreen(tk.Frame): def __init__(self, root): self.root = root tk.Frame.__init__(self, root) self.log_handler = logHandler.get_log_handler() self.text = tk.Frame(self,relief="sunken",borderwidth=1) self.text.pack(expand=True,fill=tk.BOTH) self.disable_refresh = False self.y_scroll = tk.Scrollbar(self.text, width=32) self.y_scroll.pack(side="right", fill="y") self.x_scroll = tk.Scrollbar(self.text, orient='horizontal', width=32) self.x_scroll.pack(side="bottom", fill="x") self.textfield = tk.Listbox(self.text, yscrollcommand=self.y_scroll.set, xscrollcommand=self.x_scroll.set) self.textfield.pack(side="left",expand=True, fill=tk.BOTH) self.y_scroll.config(command=self.textfield.yview) self.x_scroll.config(command=self.textfield.xview) self.quit_button = tk.Button(self, text="Close", command=self.close, height=2, width = 10) self.quit_button.pack(side="right", fill="both") self.disable_refresh_button = tk.Button(self,text="disable refreshing", command=self.toggle_refreshing, height=2, width=20, relief="raised", bg="green", activebackground="#00dd00", fg="white") self.disable_refresh_button.pack(side="right", fill="both") for element in self.log_handler.get_log_list(): self.textfield.insert(tk.END, element) self.log_handler.get_new_items() root.bind('', self.close) def update(self): if not self.root.winfo_exists(): return if not self.disable_refresh: lines = self.log_handler.get_new_items() if lines: for element in lines: self.textfield.insert(tk.END, element) self.textfield.see("end") def close(self): if self.root.winfo_exists(): self.root.destroy() def toggle_refreshing(self): self.disable_refresh = not self.disable_refresh if self.disable_refresh: self.disable_refresh_button.config(text="Enable refresh", relief="sunken", background="#ee0000", activebackground="#ff0000") else: self.disable_refresh_button.config(text="Disable refresh", relief="raised", background="green", activebackground="#00dd00")