gtk.TreeViewColumn.set_resizable(True)
を使用すると、列を手動でサイズ変更可能にすることができます...最後の列を除いて - 常に使用可能な領域を占有します。最後のgtk.TreeViewColumnをサイズ変更するには?
ほとんどの場合、私はTreeView-in-a-ScrolledViewを使用しますが、最後の列も縮小/拡大できるようにしたいと考えています。
現在、私は、次のその場しのぎを使用します。
def add_dummy_column(treeview):
def put_dummy_last(treeview, dummy):
columns = treeview.get_columns()
last = next(reversed(columns), None)
if not last or last == dummy:
return
if dummy in columns:
treeview.move_column_after(dummy, last)
else:
treeview.append_column(dummy)
dummy = gtk.TreeViewColumn()
dummy.set_min_width(1)
dummy.set_fixed_width(1)
dummy.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
dummy.set_resizable(False)
dummy.set_expand(False)
treeview.connect('columns-changed', put_dummy_last, dummy)
return dummy
しかし、このダミー列は常に邪魔になる傾向がある:などのTreeView列ループを複雑に、より良い/よりエレガントな解決策はありますか?
更新:最小限の例を偽造しようとしますが、それは実際に
を動作しますが、私はそれが私のその場しのぎなしで正常に動作することを発見しました。ここにgtk.ScrolledWindowのない最小限の例があります:
import gtk
window = gtk.Window()
window.connect('destroy', lambda *args: gtk.main_quit())
vbox = gtk.VBox()
window.add(vbox)
table = gtk.TreeView(gtk.ListStore(str, str, str))
for i in range(3):
column = gtk.TreeViewColumn('Column {}'.format(1 + i))
column.set_resizable(True)
column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
column.set_min_width(20)
column.set_fixed_width(80)
column.set_expand(False)
table.append_column(column)
vbox.pack_start(table)
vbox.pack_start(gtk.Statusbar(), False)
window.set_default_size(300, 300)
window.show_all()
gtk.main()
最後の列を縮小しようとします。しかし、あなたが
container = gtk.ScrolledWindow()
vbox.pack_start(container)
container.add(table)
に
vbox.pack_start(table)
を変更する場合は、拡張し、問題なく最後の列を縮小することができます。
最小限の例を作成するためのあなたの賢明なアドバイスは、上記を参照してください.-) –
恐ろしいです!しかし、あなたの質問への答えにあなたの "答え"を移動し、あなたの答えを "受け入れ"として選択する必要があります。このようにして、あなたの質問が「解決済み」と表示され、将来の訪問者に役立ちます。これはまた、「自己学習者バッジ」を得るための第一歩です! :) – mac
私はGTK3で作業していましたが、ScrolledWindow内のTreeViewを使用していました。私は必要なだけ列を展開することができません(または、列が常にコンテナをオーバーフローするため)。あなたは、ユーザーが列を所望のサイズに拡大または縮小することを可能にする実際の例を用いて拡張することができますか?また、すべてのセルの位置をデフュルトで表示します – ThorSummoner