Per mero esercizio sto sviluppando (in doppia versione tkinter/wxPython) una piccola applicazione mirata ad effettuare alcune "operazioni" con i pdf.
Ho definito una classe per una particolare finestra destinata a salvare/manipolare del testo estratto da un pdf, direttamente o tramite ocr, che può sussistere in due stati differenti "text" o "csv" il cui valore viene fornito quale parametro ed è memorizzato in una variabile di istanza, il secondo "stato" sussiste in una nuova istanza della classe effettuata da una finestra di stessa classe tramite un button che in condizione "csv" è disabilitato.
Il pulsante è impostato per agire tramite clic del pulsante sinistro del mouse ovvero pressione del return su tatiera o tastierino numerico nella sottostante modalità :
Codice: Seleziona tutto
# bindings
self.bt_edit.bind('<Button-1>', self._on_edit)
self.bt_edit.bind('<Return>', self._on_edit)
self.bt_edit.bind('<KP_Enter>', self._on_edit)
...
def _on_edit(self, evt):
if self.csv_win == None or not self.csv_win.winfo_exists():
self.csv_win = TextUtility(self, type='csv')
self.edit = True
self._def_max_len()
self._evaluate_context()
Pur avendo trovato facilmente varie soluzioni, l'evento anomalo non avviene se:
1 - definisco "command=self._on_edit" alla creazione del pulsante;
2 - verificando preventivamente lo stato nel callback;
3 - effettuando lo unbinding nel caso lo stato sia "csv"
Codice: Seleziona tutto
#if self.type == 'csv':
# self.bt_edit.unbind('<Button-1>')
# self.bt_edit.unbind('<Return>')
# self.bt_edit.unbind('<KP_Enter>')
Grazie dell'attenzione.