[python] tkinter, treeview, focus a scroll
zu1234
zu1234 na seznam.cz
Úterý Červen 3 17:55:24 CEST 2014
Právě že chci aby se po spuštění programu
zobrazila naposledy použitá položka.
Proto mi to tlačítko nevyhovuje.
Tak jsem vymyslel zavolání té funkce do_select()
pomocí metody after() (viz příloha)
Funguje to, jen mi to připadá dost podivné/amatérské.
Nicméně děkuji za postrčení!!!!
ZU
Dne 3.6.2014 14:17, Petr Blahos napsal(a):
> Ahoj, vypadá to, že na to je funkce see, jenže v tom __init__u to
> nefunguje. Patrně je
> potřeba, aby se to všechno vytvořilo a zobrazilo, a pak teprve to může
> fungovat. Ono
> to vlastně dá rozum, jak může see zobrazit něco v rámci něčeho, co vůbec
> není vidět?
>
> Když si do __init__u přidáš:
> * self.btn = Button(self)*
> * self.btn['text'] = 'select'*
> * self.btn['command'] = self.do_select*
> * self.btn.grid(row=2, column=0, sticky='ns')*
>
> a pak přidáš funkci
> * def do_select(self):*
> * self.tree.selection_set('I024')*
> * self.tree.see('I024')*
>
> tak po stisku toho tlačítka už to tam nascrolluje.
> --
> Petr
>
> ____________________
> http://pysk.blog.root.cz/
>
> 2014-06-03 11:58 GMT+02:00 zu1234 <zu1234 na seznam.cz
> <mailto:zu1234 na seznam.cz>>:
>
> Zdravím vespolek.
>
> Tvořím GUI aplikaci v tkinteru a je to pro mne docela zápas.
>
> Narazil jsem na jednu nejasnost a nevím ani jak to na internetu hledat.
>
> Mám treeview, v něm označím jeden prvek ('134'), on ale je za rohem
> - není vidět.
>
> Potřeboval bych aby se treeview samo odrolovalo tak, aby označený
> prvek byl viditelný.
>
> Jak na to? Příklad přikládám.
>
> Alespoň nějakou nápovědu, prosím :-)
>
> ZU
>
>
>
> _______________________________________________
> Python mailing list
> python na py.cz <mailto:python na py.cz>
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
>
>
>
>
>
> _______________________________________________
> Python mailing list
> python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
>
------------- další část ---------------
#!/usr/bin/python -u
# -*- coding: utf-8 -*-
import Tkinter as tkinter
import ttk
class app(tkinter.Frame):
def __init__(self, master):
tkinter.Frame.__init__(self, master)
self.tree = ttk.Treeview(self, selectmode = "browse")
self.tree.grid(row=0, column=0)
ysb = ttk.Scrollbar(self, orient='vertical', command=self.tree.yview)
xsb = ttk.Scrollbar(self, orient='horizontal', command=self.tree.xview)
self.tree.configure(yscrollcommand=ysb.set, xscrollcommand=xsb.set)
ysb.grid(row=0, column=1, sticky='ns')
xsb.grid(row=1, column=0, sticky='ew')
self.grid()
for x in range(100, 300):
root_node = self.tree.insert('', 'end', text = str(x), open=True)
self.tree.after(10, self.do_select, 'I023')
def do_select(self, item):
self.tree.selection_set(item)
self.tree.see(item)
self.tree.focus(item)
self.tree.focus_set()
root = tkinter.Tk()
ap = app(root)
root.mainloop()
Další informace o konferenci Python