from tkinter import *
from tkinter import ttk
from datetime import datetime
-from tkinter.messagebox import showinfo
+from tkinter.messagebox import showinfo, askyesno
import re, db, pa_com
-"""
-def csCHandler(arg1):
- csCValue=csType.get()
- csCLValue=StringVar()
- if ( csCValue == 'Imię' ):
- csCLValue.set('Imię:')
- else:
- csCLValue.set('(161)ML')
-
- if 'csTypeLabel' in locals():
- csTypeLabel.destroy();
-
- csTypeLabel=ttk.Label(csFrame, text=csCLValue.get())
- csTypeLabel.grid(column=2, row=0, padx=5)
- """
def logsWindow():
logger=csValue.get()
logs = Toplevel(root)
logs.title('Mike Lima - Logi')
- logs.geometry('640x240')
- columns = ('logger', 'sign', 'name', 'rst', 'dt', 'eq', 'ch')
- tree = ttk.Treeview(logs, columns=columns, show='headings')
+ logs.geometry('640x255')
+ tvFrame=ttk.Frame(logs, width=640, height=200)
+
+ #Wykorzystanie ttk.Treeview
+ #https://www.pythontutorial.net/tkinter/tkinter-treeview/
+ columns = ('lp', 'logger', 'sign', 'name', 'rst', 'dt', 'eq', 'ch')
+ tree = ttk.Treeview(tvFrame, columns=columns, show='headings')
+ tree.heading('lp', text='Lp.')
+ tree.column('lp', minwidth=0, width=40, stretch=NO)
tree.heading('logger', text="Logujący:")
tree.column('logger', minwidth=0, width=75, stretch=NO)
tree.heading('sign', text="Znak:")
logsRes=db.checkData(logger, db.isSignOrName(logger), 'logs')
for row in logsRes:
tree.insert('', END, values=row)
+
+ record=""
+ def logSelected(event):
+ item=tree.item(tree.selection())
+ nonlocal record
+ record=item['values']
+ if len(record) > 0:
+ logRowId.set(record[0])
+
+ def editLog():
+ cleanLoginSection()
+ loginLoggerEntry.insert(0, record[1])
+ loginSignEntry.insert(0, record[2])
+ loginNameEntry.insert(0, record[3])
+ loginRstEntry.insert(0, record[4])
+ loginDtEntry.insert(0, record[5])
+ loginEqEntry.insert(0, record[6])
+ loginChEntry.insert(0, record[7])
+ #Zmiana atrybutów wyświetlonych już widgetów:
+ #https://stackoverflow.com/questions/3998742/how-can-i-dynamically-change-the-color-of-a-button-in-tkinter
+ loginButton.configure(text="Zapisz", command=saveEditLogs)
+ loginFrame.configure(text="Edytuj:")
+ logs.destroy()
+
+ def deleteLog():
+ if askyesno(title="Mike Lima", message=f"Usunąć łączność do {record[3]} z {record[5]}?"):
+ rowid = logRowId.get()
+ db.deleteLog(rowid)
+ #Wyczyszcenie treeview przed pobraniem danych na nowo:
+ #https://stackoverflow.com/questions/22812134/how-to-clear-an-entire-treeview-with-tkinter
+ tree.delete(*tree.get_children())
+ logsRes=db.checkData(logger, db.isSignOrName(logger), 'logs')
+ for row in logsRes:
+ tree.insert('', END, values=row)
+ #Przywrócenie okna logów po zatwierdzeniu usunięcia wpisu:
+ #https://stackoverflow.com/questions/22751100/tkinter-main-window-focus
+ logs.focus_force()
+ logs.lift()
+ root.update()
+ #logs.destroy()
+
+
+ tree.bind('<<TreeviewSelect>>', logSelected)
+
+ tvFrame.grid(column=0, row=0)
tree.grid(column=0, row=0, sticky="nsew")
- scrollbar = ttk.Scrollbar(logs, orient=VERTICAL, command=tree.yview)
+ scrollbar = ttk.Scrollbar(tvFrame, orient=VERTICAL, command=tree.yview)
scrollbar.grid(column=1, row=0, sticky="ns")
+
+ buttonFrame=ttk.Frame(logs, width=640, height=32)
+ editButton=ttk.Button(buttonFrame, text="Edytuj", command=editLog)
+ editButton.grid(column=0, row=0, padx=5, pady=5)
+ deleteButton=ttk.Button(buttonFrame, text="Usuń", command=deleteLog)
+ deleteButton.grid(column=1, row=0, padx=5, pady=5)
+ buttonFrame.grid(column=0, row=1, sticky="w")
+
root.wait_window(logs)
def fillLoggerData(sign, name, lat, lon):
loginRstEntry.delete(0, END)
loginEqEntry.delete(0, END)
loginChEntry.delete(0, END)
+ loginButton.configure(text="Zaloguj", command=saveLogs)
+ loginFrame.configure(text="Zaloguj:")
def cleanLoggerSection():
csValueEntry.delete(0, END)
db.saveLog(logger, sign, name, rst, dt, radio, channel)
showinfo(title='Mike Lima', message='Łączność zapisana.')
+def saveEditLogs():
+ rowid=logRowId.get()
+ logger=loginLogger.get()
+ sign=loginSign.get()
+ name=loginName.get()
+ rst=loginRst.get()
+ dt=loginDt.get()
+ eq=loginEq.get()
+ ch=loginCh.get()
+ db.editLog(rowid, logger, sign, name, rst, dt, eq, ch)
+ showinfo(title='Mike Lima', message='Zmiany zostały zapisane.')
+
root = Tk()
root.title('Mike Lima')
loggerLogsButton.grid(column=4, row=2, padx=5, pady=5)
#Frame: Szukaj
-searchFrame=ttk.LabelFrame(content, text="Szukaj: ", borderwidth=1, relief='groove', width=640, height=32)
+searchFrame=ttk.LabelFrame(content, text="Szukaj:", borderwidth=1, relief='groove', width=640, height=32)
searchQuery=StringVar()
searchEntryLabel=ttk.Label(searchFrame, text="Imię/(161)ML: ")
loginDt=StringVar()
loginEq=StringVar()
loginCh=StringVar()
+logRowId=IntVar()
loginLoggerLabel=ttk.Label(loginFrame, text="Logujący: ")
loginLoggerEntry=ttk.Entry(loginFrame, textvariable=loginLogger)