Ho una semplice applicazione Python + Tkinter che visualizza un elenco di 10 elementi:Come impostare lo stato attivo del widget Tkinter?
import Tkinter, ttk
list = ttk.Treeview(Tkinter.Tk())
list.pack(fill = Tkinter.BOTH, expand = 1)
items = [ list.insert('', 'end', text = str(i)) for i in range(10) ]
list.selection_set(items[ 0 ])
list.focus_set() # This is not working - list has no focus :(
Tkinter.mainloop()
È possibile modificare in modo dopo all'avvio dell'applicazione, lista avrà fuoco e posso spostare selezione tramite frecce su e giù ? Dopo applicazione si avvia, la finestra dell'applicazione è attiva, ma non può muoversi di selezione con le frecce fino a quando clicco lista con il mouse :(. Ho provato diverse combinazioni di focus_set()
e focus_force()
, ma non funziona.
Controllato con Python 2.7 Windows 7, OSX 10.7 e Ubuntu 12.04
UPDATE
Se "Treeview" viene modificato in qualche altro widget, ad esempio per "Button", la messa a fuoco è in funzione. Quindi è sembra che ho impostato messa a fuoco per Treeview in qualche modo in modo errato
Ho cercato di ottenere questo lavoro, e io non sono sicuro che tu possa; sembra che la funzione sia rotta. Ci sono alcuni altri post là fuori, e nessuno ha mai trovato la soluzione. – TankorSmash
@TankorSmash Non credo che una funzione sia stata interrotta: Tk/Tkinter ha decenni, quindi sicuramente sto facendo qualcosa di sbagliato :) – grigoryvp
Heh, pensi che eh? Ho suddiviso la Treeview in "__init__', ho chiamato' focus_set', quindi chiamato 'focus_get' subito dopo, e ha restituito None, suggerendo che nulla fosse cambiato, anche con' takefocus' impostato su '1'. - Anche modificato il codice di Tkinter, subito dopo viene chiamato 'self.tk.call ('focus', self._w)', controllo se il widget 'focus_has' ed è ancora' None'. È possibile che il mainloop debba impostare qualcosa in modo che la messa a fuoco cambi, ma ne dubito. – TankorSmash