fixed keybindings, refactoring and table focus
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user