Nell'applicazione GUI su cui sto lavorando ho un numero di widget personalizzati (compositi) che ho creato, con ogni widget che ha una funzione update_gui
in cui accedo al mio database SQLite in modo da poter compilare aree di testo , imposta lo stato della casella di controllo, ecc.
Mi imbatto costantemente nel problema degli eventi che vengono generati quando viene eseguito il codice gui_update
, ad esempio quando aggiorno lo stato di una casella di controllo e viene attivato l'evento di modifica per la casella di spunta
Cosa posso fare per evitare questo problema? (O per aggirare il problema? Devo ripensare all'intero approccio?) Non voglio che il codice di gestione degli eventi venga eseguito quando lo stato della casella di controllo (o altro widget) viene aggiornato a livello di programmazione
Un approccio che ho provato è quello di gestire l'evento click o mousedown (o tastiera per il testo) e usarlo al posto dell'evento che viene attivato quando la casella di controllo cambia stato. Il problema con questo approccio è che potrebbero esserci altri modi per cambiare lo stato (ad esempio, navigare alla casella di controllo con la tastiera e premere space
)
Attualmente sto lavorando con Qt (con i binding PyQt5) ma ho avuto lo stesso problema su un'altra piattaforma, quindi il problema sembra più generale, anche se forse la soluzione potrebbe essere specifica per Qt
Grato aiuto e cordiali saluti, Tord