自动调整Python Gtk3 TreeViewColumn的大小,但使其可调整大小
我尝试更改列的宽度。当我将它们设置为自动调整大小时,它们的大小都很好,但我无法使它们变小 然后我将列设置为固定大小,但现在水平滚动条不再显示 因此,也许可以从自动调整列宽开始,但也可以在以后更改列宽自动调整Python Gtk3 TreeViewColumn的大小,但使其可调整大小,python,gtk3,gtktreeview,Python,Gtk3,Gtktreeview,我尝试更改列的宽度。当我将它们设置为自动调整大小时,它们的大小都很好,但我无法使它们变小 然后我将列设置为固定大小,但现在水平滚动条不再显示 因此,也许可以从自动调整列宽开始,但也可以在以后更改列宽 #!/usr/bin/env python import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk window = Gtk.Window(Gtk.WindowType.TOPLEVEL) window.s
#!/usr/bin/env python
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
window = Gtk.Window(Gtk.WindowType.TOPLEVEL)
window.set_size_request(400, 200)
mainbox = Gtk.VBox()
window.add(mainbox)
scrolled_window = Gtk.ScrolledWindow()
mainbox.pack_start(scrolled_window, True, True, 0)
transactions_liststore = Gtk.ListStore(str, str, str, str, str, str)
for n in range(30):
transactions_liststore.append(["A", "2016-10-10", "Ulrich Farmer", "99,99 EUR", "A short Text", "A longer Text with much much more more content"])
treeview = Gtk.TreeView(Gtk.TreeModelSort(transactions_liststore))
scrolled_window.add(treeview)
for n, name in enumerate(["Type", "Date", "Name", "Value", "Info1", "Info2"]):
cell = Gtk.CellRendererText()
column = Gtk.TreeViewColumn(name, cell, text=n)
if True:
column.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
column.set_fixed_width(50)
column.set_min_width(50)
column.set_expand(True)
column.set_resizable(True)
column.set_reorderable(True)
treeview.append_column(column)
window.show_all()
Gtk.main()
编辑:
发现
如果“可调整大小”为True且列的大小调整模式为
Gtk.treeviewcolumnsize.AUTOSIZE,则大小调整模式更改为
仅限Gtk.treeviewColumnsize.GROW_
请尝试以下代码:
if True:
column.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
#column.set_fixed_width(50)
编辑:
仍然无法调整最后一列的大小,但可以调整其他列的大小。希望这能有所帮助。谢谢您的评论。这就是我的问题:当我将它们设置为自动调整列名大小时,它们的大小都很好,但我无法使它们变小。您是否试图使它们小于列名?你想缩小哪一列?不是比列名小,而是比内容文本小。例如,假设Info1有一行包含非常长的文本内容,但您希望该行非常小,因为更需要查看Info2行:-)我已使用适用于我的代码编辑了我的答案,但最后一列仍然是固定的。
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GdkPixbuf, Gdk
import os, sys
class GUI:
def __init__(self):
window = Gtk.Window(Gtk.WindowType.TOPLEVEL)
window.set_size_request(400, 200)
mainbox = Gtk.VBox()
window.add(mainbox)
window.connect('destroy', self.on_window_destroy)
scrolled_window = Gtk.ScrolledWindow()
mainbox.pack_start(scrolled_window, True, True, 0)
transactions_liststore = Gtk.ListStore(str, str, str, str, str, str)
for n in range(30):
transactions_liststore.append(["A", "2016-10-10", "Ulrich Farmer", "99,99 EUR", "A longer Text with much much more more content", "A short Text"])
treeview = Gtk.TreeView(Gtk.TreeModelSort(transactions_liststore))
scrolled_window.add(treeview)
for n, name in enumerate(["Type", "Date", "Name", "Value", "Info1", "Info2"]):
cell = Gtk.CellRendererText()
column = Gtk.TreeViewColumn(name, cell, text=n)
column.set_min_width(50)
column.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
column.set_resizable(True)
column.set_reorderable(True)
treeview.append_column(column)
window.show_all()
def on_window_destroy(self, window):
Gtk.main_quit()
def main():
app = GUI()
Gtk.main()
if __name__ == "__main__":
sys.exit(main())