Sto lavorando con tkinter su Python 3.4.1 (Windows 7), e sto riscontrando che la funzione Entry.xview_moveto di ttk non funziona correttamente. Ecco qualche semplice codice:Perché l'Entry.xview_moveto di tkinter fallisce?
from tkinter import *
from tkinter import ttk
a = Tk()
text = StringVar(a, value='qwertyuiopasdfghjklzxcvbnm1234567890')
b = ttk.Entry(a, textvariable=text)
b.grid()
b.xview_moveto(1)
La funzione xview_moveto deve scorrere il testo fino in fondo a sinistra, ma non è così. Tuttavia, ho notato che se uso
b.after(500, b.xview_moveto, 1)
funziona perfettamente. Perché devo ritardare la chiamata di funzione perché funzioni correttamente? Sto facendo qualcosa di sbagliato?
Aggiornamento: oltre alla soluzione di fhdrsdg, ho trovato che il metodo Entry.after_idle
funziona per il mio programma. Non sembra funzionare per il semplice esempio precedente, ma se qualcun altro ha lo stesso problema di me, questa potrebbe essere un'altra soluzione dall'aspetto più pulito.
non è necessario chiamare 'update_idletasks' nel gestore eventi. L'unico modo in cui viene chiamato il gestore è se 'update' è appena stato eseguito. –
Questo è quello che pensavo, ma quando tengo quella linea la vista non si muove per me. – fhdrsdg
Interessante. Grazie per la risposta. –