Come sopprimere la capacità dell'utente finale di modificare/aggiungere/eliminare il testo in un widget Testo? (Python v3.2 .. e tkinter)Read Only Widget di testo in python3-tkinter; multipiattaforma
Il punto è sopprimere solo la possibilità di modificare/aggiungere/eliminare il testo ma non per castrare altre funzioni. Forse un NoEdit Text widged sarebbe un nome migliore.
Ho provato .text [ 'stato'] = 'disattivato' e funziona quasi OK in Windows (permette comunque all'utente di selezionare/copiare il testo evidenzia la selezione, pagina su/giù e su/down funzionano. L'unica cosa rotta sembra essere il cursore reso invisibile.)
Ma su MacIntosh è tutto rotto. Non mette in evidenza, senza selezionare/copiare, ... uffa
Dal Tkinter non ha praticamente alcuna documentazione in Python, ho cercato e trovato alcuni TCL consiglio, per derivare una nuova classe e sopprimere l'inserto e cancellare funzioni.
Così, ho provato come così:
class roText(tk.Text):
def insert(self,*args,**kwargs):
print(" Hey - Im inside roText.insert")
pass
def delete(self,*args,**twargs):
pass
def pInsert(self,*args,**twargs):
super().insert(*args,**twargs)
Purtroppo non ha funzionato bene. Apparentemente tkinter non usa quelle funzioni di inserimento ed eliminazione quando l'utente finale inserisce/cancella il codice. Forse questi inserimenti/cancri TCL sono qualcos'altro, e ho perso qualcosa nella traduzione da TCL e Swahili. Quali funzioni utilizza tkinter.Text per il testo di modifica dell'utente finale? Speriamo che non siano interni ...
Quindi, c'è un modo per modificare il widget Testo per sopprimere solo la modifica dell'utente finale? C'è un modo per farlo senza immergersi all'interno e sovrascrivere il codice interno di Tkinter, quindi le cose non verranno interrotte dalle prossime versioni di Tkinter?
Guardando la finestra della shell inattiva, vedo che sono riusciti a eliminare le modifiche (tranne che per l'ultima riga). Quindi c'è un modo. Ma cos'è e quanto costa?
OK, ho avuto la possibilità di eseguire il test su Mac e il parametro text.focus_set() associato a <1> ha risolto il problema, proprio come avevate detto. ** Grazie !!! ** (Forse questa pagina può essere ripulita per gli altri in cerca di una soluzione. E ne ho visti molti sul web). Sfortunatamente come temevo era apparentemente uno dei molti problemi con Tkinter port to Mac. il colore "verde" non funziona sui pulsanti, il testo sui pulsanti richiede più spazio (questo potrebbe essere correlato alla risoluzione), ecc. Questi sono facili da aggirare, e spero solo che peggio non venga visualizzato – Momus