refactored child windows into Window class

This commit is contained in:
2025-04-19 14:01:33 +02:00
parent bb31a52934
commit 72b4614d4d

View File

@@ -18,15 +18,32 @@ def show_error(message_title: str, message: str, parent: tk.Tk | tk.Toplevel):
) )
class SettingsWindow(tk.Toplevel): class Window(tk.Toplevel):
def __init__(self, root: tk.Tk): def __init__(self, root: tk.Tk):
super().__init__(root) super().__init__(root)
self.root = root self.root = root
self.protocol("WM_DELETE_WINDOW", self.close_window) self.protocol("WM_DELETE_WINDOW", self.close_window)
def close_window(self):
self.destroy_window()
def destroy_window(self):
self.root.update()
self.destroy()
class InsertRecord(Window):
def __init__(self, root: tk.Tk):
super().__init__(root)
self.title("Adresse einfügen")
tk.Button(self, text="Abbrechen", command=self.close_window).pack()
class SettingsWindow(Window):
def __init__(self, root: tk.Tk):
super().__init__(root)
self.geometry(f"500x330+{self.root.winfo_x() + 20}+{self.root.winfo_y() + 20}") self.geometry(f"500x330+{self.root.winfo_x() + 20}+{self.root.winfo_y() + 20}")
self.config = Config() self.config = Config()
self.json_file = tk.StringVar() self.json_file = tk.StringVar()
self.csv_file = tk.StringVar() self.csv_file = tk.StringVar()
@@ -94,14 +111,6 @@ class SettingsWindow(tk.Toplevel):
def cancel(self): def cancel(self):
self.close_window() self.close_window()
def close_window(self):
self.destroy_window()
def destroy_window(self):
self.root.update()
self.root.deiconify()
self.destroy()
class Config: class Config:
parser: ConfigParser parser: ConfigParser
@@ -260,12 +269,11 @@ class Application:
self.root.destroy() self.root.destroy()
def show_settings(self): def show_settings(self):
settings = SettingsWindow(self.root) settings = self.open_window(SettingsWindow)
settings.wm_transient(self.root)
settings.grab_set()
settings.wait_window() settings.wait_window()
def insert_record(self): def insert_record(self):
self.open_window(InsertRecord)
if self.current_record is not None: if self.current_record is not None:
self.clear_entry_fields() self.clear_entry_fields()
children = self.table.get_children() children = self.table.get_children()
@@ -431,6 +439,11 @@ class Application:
for item in self.table.get_children(): for item in self.table.get_children():
self.table.delete(item) self.table.delete(item)
def open_window(self, child: type[Window]) -> Window:
window = child(self.root)
window.wm_transient(self.root)
window.grab_set()
return window
if __name__ == '__main__': if __name__ == '__main__':
Application() Application()