Изменение размера gtk TreeView в проблеме HP - PullRequest
9 голосов
/ 21 января 2011

У меня есть вид дерева в левой части hpaned, но когда я пытаюсь переместить панель влево, чтобы сделать вид дерева меньше его автоматического размера вместо изменения размера дерева, он расширяет все окно программы вправо.Любые идеи о том, как это исправить?

Соответствующие части источника следующие:

Для hpaned.

    self.vpan = gtk.VPaned()
    self.hpan = gtk.HPaned()
    self.vpan.show()
    self.hpan.show()

    self.vBox1.pack_end(self.hpan, True, True, 0)
    self.hpan.pack2(self.vpan,True, True)

И для дерева View.

    self.ftree = gtk.TreeStore(str,str,str)
    self.treefill(None, os.path.abspath(os.path.dirname(__file__)))

    self.tree = gtk.TreeView(self.ftree)
    self.tvcolumn = gtk.TreeViewColumn('Project')
    self.tree.append_column(self.tvcolumn)
    self.cellpb = gtk.CellRendererPixbuf()
    self.celltxt = gtk.CellRendererText()

    self.tvcolumn.pack_start(self.cellpb,False)
    self.tvcolumn.pack_start(self.celltxt,True)

    self.tvcolumn.set_attributes(self.cellpb, stock_id=0)
    self.tvcolumn.set_attributes(self.celltxt, text=1)
    self.tvcolumn.set_resizable(True)

    self.hpan.pack1(self.tree,True,True)
    self.tree.show()

1 Ответ

2 голосов
/ 12 сентября 2011

Я собирался ответить на этот вопрос, а затем я понял, что мой ответ был повторением ответа пользователя. Но, поскольку он не опубликовал свою резолюцию в качестве ответа, я все равно буду. (Ниже я бы написал, если бы он этого не понял.)

Expand и Fill, кажется, вызывают небольшую борьбу за пространство между различными объектами в этой коробке (поскольку я предполагаю, что все ваши объекты делают это. У меня тоже была привычка, но не проблема .) В документации PyGTK «Расширить» определяется как

Истина, если ребенку нужно предоставить дополнительное пространство, выделенное для бокса. Экстра пространство будет равномерно распределено между всеми дочерними элементами ящика опция.

и «Заполнить» как:

Истина, если пространство, выделенное для дочернего элемента параметром расширения, действительно выделяется ребенку, а не просто дополняет его. Этот параметр не имеет эффект, если расширение установлено в False. Ребенок всегда выделяется в полном объеме высота gtk.HBox и полная ширина gtk.VBox. Этот вариант влияет на другое измерение.

Так что, по сути, коробка дает всему одинаковое пространство ... вы даете больше одному, оно дает другому, и все объекты берут это и становятся больше. Затем окно должно быть расширено для компенсации.

Чтобы исправить это, установите один или оба из этих параметров на «Ложь». Установка «Развернуть» на «Ложь» также отключит «Заливку», но только установка «Заливка» на «Ложь» приведет к тому, что поле даст дополнительное пространство для объектов «Заливка-Ложь» вместо заполнения.

...