I made a silly calendar/scheduler using tkcalendar for scheduling events on a specific day.
Basically it works well, but, if there are more events recorded on a specific day, only one of them will be shown in the textbox, while in the shell they are shown correctly.
Here is the code:
from tkinter import *
from tkcalendar import Calendar
from tkinter import messagebox
import csv
fin_cal = Tk()
def seleziona_data(event):
global sel_data
sel_data = calendario.get_date()
print(sel_data)
def inserisci_evento():
data = StringVar()
ora = StringVar()
nominativo = StringVar()
evento = StringVar()
frm_eventi = Frame(fin_cal)
frm_eventi.pack()
etic_data = Label(frm_eventi, text='Data')
etic_data.pack(pady=10)
entry_data = Entry(frm_eventi, textvariable=data, justify='center')
entry_data.pack()
entry_data.insert(0, sel_data)
etic_ora = Label(frm_eventi, text='Ora')
etic_ora.pack(pady=10)
entry_ora = Entry(frm_eventi, textvariable=ora, justify='center')
entry_ora.pack()
etic_nom = Label(frm_eventi, text="Nominativo")
etic_nom.pack(pady=10)
entry_nominativo = Entry(frm_eventi, textvariable=nominativo, justify='center')
entry_nominativo.pack()
etic_evento = Label(frm_eventi, text="Evento")
etic_evento.pack(pady=10)
entry_evento = Entry(frm_eventi, width=35, textvariable=evento)
entry_evento.pack()
def registra_evento():
a_data = data.get()
a_ora = ora.get()
a_nominativo = nominativo.get()
a_evento = evento.get()
with open('/path/to/file.csv', 'a',
encoding='UTF-8') as calendario_eventi:
scrit_eventi = csv.writer(calendario_eventi)
scrit_eventi.writerow([a_data,
a_ora,
a_nominativo,
a_evento])
if registra_evento:
messagebox.showinfo(title="Registrazione evento",
message="Evento registrato nel calendario")
pls_evento = Button(frm_eventi,
text="Registra evento",
command=registra_evento)
pls_evento.pack(pady=10)
def chiudi_ins_ev():
frm_eventi.destroy()
pls_chiudi = Button(frm_eventi, text='x', command=chiudi_ins_ev)
pls_chiudi.pack()
def leggi_cal():
cal_in_lett = open('/path/to/file.csv', 'r',
encoding='UTF-8')
let_kal = csv.reader(cal_in_lett)
for rig in let_kal:
if sel_data in rig:
testo_evnt = str(rig)
print(rig)
t_bx = Text(fin_cal)
t_bx.pack(pady=30)
t_bx.insert('end', testo_evnt)
calendario_in_lettura = open('/path/to/file.csv', 'r',
encoding='UTF-8')
lettr_cal = csv.reader(calendario_in_lettura)
for riga in lettr_cal:
dt = riga[0]
orario = riga[1]
nmntv = riga[2]
evnt = riga[3]
calendario = Calendar(fin_cal,
date_pattern='dd/mm/y')
calendario.pack(pady=15)
pls_inser_evento = Button(fin_cal,
text="Inserisci nuovo evento",
command=inserisci_evento)
pls_inser_evento.pack(pady=15)
pls_mostra = Button(fin_cal,
text="Mostra eventi del giorno selezionato",
command=leggi_cal)
pls_mostra.pack()
fin_cal.bind('<Button-1>', seleziona_data)
fin_cal.mainloop()
and this is what I get:
How can I get the correct print into the textbox with all the events for the specific selected day?