diff --git a/src/brovski-adress-etiketten-verwaltung.py b/src/brovski-adress-etiketten-verwaltung.py index 808c22c..ac07ace 100644 --- a/src/brovski-adress-etiketten-verwaltung.py +++ b/src/brovski-adress-etiketten-verwaltung.py @@ -5,11 +5,10 @@ import tkinter as tk from configparser import NoSectionError, NoOptionError from tkinter import messagebox from tkinter import ttk -import json from config import Config from connector import JSONConnector -from windows import SettingsWindow, EditRecord, Window, show_error +from windows import SettingsWindow, EditRecord, show_error class Application: @@ -93,8 +92,10 @@ class Application: scrollbar.pack(side=tk.LEFT, fill=tk.Y) self.table.bind("", self.mouse_click) - self.table.bind("", self.mouse_click_double) + self.table.bind("", self.enter_button) self.table.bind("", self.mouse_click_double) + self.root.bind("", self.focus_table) + self.root.bind("", self.focus_table) # bottom status bar tk.Label(bottom_frame, textvariable=self.statusbar).pack(side=tk.LEFT) @@ -202,7 +203,10 @@ class Application: region = self.table.identify("region", event.x, event.y) match region: case "cell": - self.click_on_cell() + self.edit_selected_record() + + def enter_button(self, event): + self.edit_selected_record() def click_on_header(self, event): column = self.table.identify_column(event.x) @@ -229,7 +233,9 @@ class Application: self.address_list = self.model.get_all_sorted_by(field, self.sort_order) self.populate_table(reload=False) - def click_on_cell(self): + def edit_selected_record(self): + if self.table.focus() is None or self.table.focus() == "": + return self.current_record = int(self.table.focus()) self.open_window_edit_records(self.current_record) @@ -311,6 +317,16 @@ class Application: self.address_list.sort(key=lambda x: (x["firma"], x["name"])) self.populate_table() + def focus_table(self, event): + first = self.table.get_children()[0] + last = self.table.get_children()[-1] + goto = last if event.keysym == "Up" else first + if self.table.focus() == "": + self.table.selection_set(goto) + self.table.focus(goto) + self.table.see(goto) + self.table.focus_force() + if __name__ == '__main__': Application()