Добрых суток.
Разбираюсь с pygtk и столкнулся с такой проблемой. Если ScrolledWindow размещён в VBox, а VBox в окне, то всё нормально работает и список с прокруткой отображается. Однако если вместо VBox использовать Layout и его помещать в окно, то отображается пустое окно.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import gtk, gobject
COLUMN_STRING = 1
data = [
[ 'first row' ],
[ 'second row' ],
]
select = []
def list_selections(self, param, d=None):
i = list(param)[0]
select.append(data[i])
def selection_cb(selection):
global select
select = []
selection.selected_foreach(list_selections)
for e in select:
print e
def main():
win = gtk.Window()
win.set_title("Main Window")
win.connect("destroy", lambda win: gtk.main_quit())
vbox = gtk.VBox()
layout = gtk.Layout()
win.add(vbox)
#win.add(layout)
sw = gtk.ScrolledWindow(None, None)
sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
vbox.pack_start(sw)
#layout.put(sw, 0, 0)
ls = gtk.ListStore(gobject.TYPE_UINT, gobject.TYPE_STRING)
for item in data:
iter = ls.append()
ls.set(iter, COLUMN_STRING, item[0])
tv = gtk.TreeView(ls)
sw.add(tv)
selection = tv.get_selection()
selection.set_mode(gtk.SELECTION_MULTIPLE)
selection.connect("changed", selection_cb)
renderer = gtk.CellRendererText()
col = gtk.TreeViewColumn('String', renderer, text=COLUMN_STRING)
tv.append_column(col)
win.set_default_size (200,300)
win.show_all()
gtk.main()
if __name__ == '__main__':
main()
Это такая особенность ScrolledWindow или это можно как-то исправить?
Заранее спасибо