[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