2012-05-30 7 views

risposta

9

Hai provato semplicemente a disabilitare il widget di testo?

text_widget.configure(state="disabled") 

Su alcune piattaforme, è inoltre necessario aggiungere un vincolante per <1> per dare l'attenzione al widget, altrimenti l'evidenziazione per la copia non viene visualizzato:

text_widget.bind("<1>", lambda event: text_widget.focus_set()) 

Se si disattiva il widget , per inserire programatically è sufficiente

  1. cambiare lo stato del widget per NORMAL
  2. I NSERT il testo, e quindi
  3. cambiare lo stato di nuovo a DISABLED

Finché non si chiama update nel bel mezzo di quella allora non c'è modo per l'utente sia in grado di entrare in qualsiasi cosa in modo interattivo.

+0

Sì, sì, ma secondo i documenti, che non consente l'inserimento di nulla, anche da funzioni e così via. –

+0

@PsychicOak: ovviamente. Ma per inserire programmaticamente tutto ciò che devi fare è impostare lo stato su "normale", inserire il testo, quindi resettare lo stato su "disabilitato". Ho aggiornato la mia risposta per includere tali informazioni. –

+0

* sospiro * mi sento stupido ora>.> Haha grazie! otterrete i vostri punti quando sono autorizzato ad accettare xD –

1

Scusa se sono in ritardo per la festa ma ho trovato questa pagina cercando la stessa soluzione che hai.

Ho scoperto che se si "disabilita" il widget Testo di default e poi "normale" esso all'inizio di una funzione che gli dà l'input e lo "disabilita" di nuovo alla fine della funzione.

def __init__(): 
    self.output_box = Text(fourth_frame, width=160, height=25, background="black", foreground="white") 
    self.output_box.configure(state="disabled") 

def somefunction(): 
    self.output_box.configure(state="normal") 
    (some function goes here) 
    self.output_box.configure(state="disable") 
0

sono incappato lo stato = state = soluzione "normale"/"disabile", così, però poi non si riesce a selezionare e copiare il testo da esso. Finalmente ho trovato la soluzione di seguito da: Is there a way to make the Tkinter text widget read only?, e questa soluzione consente di selezionare e copiare il testo e seguire i collegamenti ipertestuali.

import Tkinter 

root = Tkinter.Tk() 
readonly = Tkinter.Text(root) 
readonly.bind("<Key>", lambda e: "break") 
Problemi correlati