Добрых суток.
Разбираюсь с 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 или это можно как-то исправить?
Заранее спасибо



