refactored child windows into Window class
This commit is contained in:
@@ -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):
|
||||
super().__init__(root)
|
||||
self.root = root
|
||||
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.config = Config()
|
||||
|
||||
self.json_file = tk.StringVar()
|
||||
self.csv_file = tk.StringVar()
|
||||
|
||||
@@ -94,14 +111,6 @@ class SettingsWindow(tk.Toplevel):
|
||||
def cancel(self):
|
||||
self.close_window()
|
||||
|
||||
def close_window(self):
|
||||
self.destroy_window()
|
||||
|
||||
def destroy_window(self):
|
||||
self.root.update()
|
||||
self.root.deiconify()
|
||||
self.destroy()
|
||||
|
||||
|
||||
class Config:
|
||||
parser: ConfigParser
|
||||
@@ -260,12 +269,11 @@ class Application:
|
||||
self.root.destroy()
|
||||
|
||||
def show_settings(self):
|
||||
settings = SettingsWindow(self.root)
|
||||
settings.wm_transient(self.root)
|
||||
settings.grab_set()
|
||||
settings = self.open_window(SettingsWindow)
|
||||
settings.wait_window()
|
||||
|
||||
def insert_record(self):
|
||||
self.open_window(InsertRecord)
|
||||
if self.current_record is not None:
|
||||
self.clear_entry_fields()
|
||||
children = self.table.get_children()
|
||||
@@ -431,6 +439,11 @@ class Application:
|
||||
for item in self.table.get_children():
|
||||
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__':
|
||||
Application()
|
||||
|
||||
Reference in New Issue
Block a user