added insert and delete routines

This commit is contained in:
2025-04-18 00:32:04 +02:00
parent 5492e0b302
commit 49dd662106

View File

@@ -1,7 +1,7 @@
import csv import csv
import os import os
import tkinter as tk import tkinter as tk
from configparser import NoSectionError, NoOptionError from configparser import NoOptionError
from configparser import ConfigParser from configparser import ConfigParser
from tkinter import messagebox from tkinter import messagebox
from tkinter import ttk from tkinter import ttk
@@ -74,8 +74,8 @@ class Application:
top_frame.pack(side=tk.TOP, fill=tk.X) top_frame.pack(side=tk.TOP, fill=tk.X)
button_width = 8 button_width = 8
tk.Button(top_frame, text="Export CSV", command=self.export_csv, width=button_width).grid(row=0, column=2) tk.Button(top_frame, text="Export CSV", command=self.export_csv, width=button_width).grid(row=0, column=2)
tk.Button(top_frame, text="Insert", command=self.export_csv, width=button_width).grid(row=0, column=0) tk.Button(top_frame, text="Insert", command=self.insert_record, width=button_width).grid(row=0, column=0)
tk.Button(top_frame, text="Delete", command=self.export_csv, width=button_width).grid(row=0, column=1) tk.Button(top_frame, text="Delete", command=self.delete_record, width=button_width).grid(row=0, column=1)
self.aktiv = tk.StringVar() self.aktiv = tk.StringVar()
self.firma = tk.StringVar() self.firma = tk.StringVar()
@@ -113,18 +113,75 @@ class Application:
self.table.heading('4', text="Plz/Ort") self.table.heading('4', text="Plz/Ort")
self.table.pack() self.table.pack()
self.table.bind("<ButtonRelease-1>", self.select_record) self.table.bind("<ButtonRelease-1>", self.mouse_click)
self._load_file() self._load_file()
self.root.mainloop() self.root.mainloop()
def select_record(self, event): def insert_record(self):
self.current_record = self.table.focus() if self.current_record is not None:
values = self.table.item(self.current_record, "values") self.clear_entry_fields()
children = self.table.get_children()
values = [
"x",
"Firma",
"Name",
"Strasse",
"Plz/Ort",
]
self.table.insert('', 'end', values=values)
self._save_file()
def delete_record(self):
if self.current_record is None:
return
if messagebox.askyesno(
"Eintrag löschen?",
"Willst du diesen Eintrag wirklich löschen?\nDies kann nicht rückgängig gemacht werden"):
self.table.delete(self.current_record)
self.clear_entry_fields()
self._save_file()
def clear_entry_fields(self):
entry_var_list = [self.aktiv, self.firma, self.name, self.strasse, self.plz_ort] entry_var_list = [self.aktiv, self.firma, self.name, self.strasse, self.plz_ort]
for i in range(len(values)): for entry in entry_var_list:
entry_var_list[i].set(values[i]) entry.set("")
self.current_record = None
def mouse_click(self, event):
region = self.table.identify("region", event.x, event.y)
if region == "heading":
column = self.table.identify_column(event.x)
match column:
case "#1":
self.address_list.sort(key=lambda x: x[int(column[-1]) - 1])
self.populate_table()
case "#2":
self.address_list.sort(key=lambda x: x[int(column[-1]) - 1])
self.populate_table()
case "#3":
self.address_list.sort(key=lambda x: x[int(column[-1]) - 1])
self.populate_table()
case "#4":
self.address_list.sort(key=lambda x: x[int(column[-1]) - 1])
self.populate_table()
case "#5":
self.address_list.sort(key=lambda x: x[int(column[-1]) - 1])
self.populate_table()
case _:
print(column)
if region == "cell":
self.current_record = self.table.focus()
values = self.table.item(self.current_record, "values")
entry_var_list = [self.aktiv, self.firma, self.name, self.strasse, self.plz_ort]
for i in range(len(values)):
entry_var_list[i].set(values[i])
def update_record(self): def update_record(self):
if self.current_record is None: if self.current_record is None:
@@ -139,10 +196,7 @@ class Application:
for key, value in values.items(): for key, value in values.items():
self.table.set(self.current_record, key, value) self.table.set(self.current_record, key, value)
entry_var_list = [self.aktiv, self.firma, self.name, self.strasse, self.plz_ort] self.clear_entry_fields()
for entry in entry_var_list:
entry.set("")
self.current_record = None
self._save_file() self._save_file()
def _load_file(self): def _load_file(self):