LINUX.ORG.RU

gtk.TreeView ???


0

0

Народ, покажите нормальный коментированый пример gtk.TreeView для построения древовидной структуры. Желательно на питоне...

Зараннее спасибо

Ответ на: комментарий от ananas

Poprobowal takoj kod:

import gtk
from rhpl.translate import _, N_
import rhpl.translate
import gobject

class tree:
def __init__(self):
self.fenster = gtk.Window()
self.fenster.connect('delete_event',lambda *args: gtk.mainquit(),None)
self.fenster.set_size_request(550, 420)
self.fenster.set_resizable(gtk.FALSE)
self.fenster.set_title(_('Network Settings'))
self.fenster.set_position(gtk.WIN_POS_CENTER)

model = gtk.TreeStore(gobject.TYPE_PYOBJECT,gobject.TYPE_STRING)

image = gtk.Image()
image.set_from_stock(gtk.STOCK_OK,gtk.ICON_SIZE_MENU)

iter = model.insert_before(None,None)
model.set(iter,0,image)
model.set(iter,1,'Test')

print model.get_value(iter,0)
print model.get_value(iter,1)

tree_view = gtk.TreeView(model)

sc = gtk.ScrolledWindow()
sc.add_with_viewport(tree_view)

self.fenster.add(sc)

self.fenster.show_all()


a = tree()

gtk.main()

rabotaet bez oschibok, no ja nitschego ne wischu w TreeView

stiner_rd
() автор топика
Ответ на: комментарий от stiner_rd

Ну а кто будет колонки для просмотра добавлять?

Нужно добавить еще и колонки к treeview, которые и будут отображать все

        cell = gtk.CellRendererPixbuf()
        column = gtk.TreeViewColumn("Image", cell, pixbuf=0)
	tree_view.append_column(column)

        cell = gtk.CellRendererText()
        column = gtk.TreeViewColumn("Text", cell, text=1)
	tree_view.append_column(column)

Для того, чтобы отображать иконки, нужно в модель добавлять не GtkImage, а
GdkPixbuf, и потом его отобажать с помощью GtkCellRendererPixbuf.

Да, и еще одно замечание. Некоторые виджеты в gtk имеют встроенную поддержку 
скроллинга. К ним относятся GtkTreeView и GtkText. Такие виджеты нужно добавлять
без viewport'a то есть писать просто sw.add, вместо sw.add_with_viewport.

а вообще в составе pygtk есть целая папка с примерами, там все это есть, можно
посмотреть.

Вот полный пример:

import gtk
import gobject

class tree:
    def __init__(self):
	self.fenster = gtk.Window()
        self.fenster.connect('delete_event',lambda *args: gtk.mainquit(),None)
	self.fenster.set_size_request(550, 420)
        self.fenster.set_resizable(gtk.FALSE)
	self.fenster.set_title('Network Settings')
        self.fenster.set_position(gtk.WIN_POS_CENTER)

	model = gtk.TreeStore(gobject.TYPE_OBJECT,gobject.TYPE_STRING)
        pixbuf = self.fenster.render_icon(gtk.STOCK_OK, gtk.ICON_SIZE_MENU);
	iter = model.insert_before(None,None)
        model.set(iter,0, pixbuf)
        model.set(iter,1,'hello world')

        tree_view = gtk.TreeView(model)

        cell = gtk.CellRendererPixbuf()
        column = gtk.TreeViewColumn("Image", cell, pixbuf=0)
	tree_view.append_column(column)
        cell = gtk.CellRendererText()
        column = gtk.TreeViewColumn("Text", cell, text=1)
	tree_view.append_column(column)

        sc = gtk.ScrolledWindow()
	sc.add (tree_view)
        self.fenster.add(sc)
	self.fenster.show_all()


a = tree()

gtk.main()

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.