fixed keybindings, refactoring and table focus

This commit is contained in:
2025-04-30 19:58:16 +02:00
parent ec130fcee9
commit 96995f1e80

View File

@@ -5,11 +5,10 @@ import tkinter as tk
from configparser import NoSectionError, NoOptionError from configparser import NoSectionError, NoOptionError
from tkinter import messagebox from tkinter import messagebox
from tkinter import ttk from tkinter import ttk
import json
from config import Config from config import Config
from connector import JSONConnector from connector import JSONConnector
from windows import SettingsWindow, EditRecord, Window, show_error from windows import SettingsWindow, EditRecord, show_error
class Application: class Application:
@@ -93,8 +92,10 @@ class Application:
scrollbar.pack(side=tk.LEFT, fill=tk.Y) scrollbar.pack(side=tk.LEFT, fill=tk.Y)
self.table.bind("<ButtonRelease-1>", self.mouse_click) self.table.bind("<ButtonRelease-1>", self.mouse_click)
self.table.bind("<Return>", self.mouse_click_double) self.table.bind("<Return>", self.enter_button)
self.table.bind("<Double-1>", self.mouse_click_double) self.table.bind("<Double-1>", self.mouse_click_double)
self.root.bind("<Up>", self.focus_table)
self.root.bind("<Down>", self.focus_table)
# bottom status bar # bottom status bar
tk.Label(bottom_frame, textvariable=self.statusbar).pack(side=tk.LEFT) 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) region = self.table.identify("region", event.x, event.y)
match region: match region:
case "cell": 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): def click_on_header(self, event):
column = self.table.identify_column(event.x) 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.address_list = self.model.get_all_sorted_by(field, self.sort_order)
self.populate_table(reload=False) 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.current_record = int(self.table.focus())
self.open_window_edit_records(self.current_record) 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.address_list.sort(key=lambda x: (x["firma"], x["name"]))
self.populate_table() 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__': if __name__ == '__main__':
Application() Application()