gpt4 book ai didi

python - 禁用 TreeView 列 "minimum size"行为

转载 作者:行者123 更新时间:2023-12-01 01:10:20 24 4
gpt4 key购买 nike

我在两个嵌套的 Paned 小部件内有三个 TreeView 小部件:

  • 平铺(水平)
    • 平铺(垂直)
      • TreeView
      • TreeView
    • TreeView

也就是说,一左一右有两个TreeView,而且它们都可以调整大小。此外,所有 TreeView 都位于 ScrolledWindows 内,水平滚动条策略设置为“从不”。

左侧的两个 TreeView 都只有一列包含文本。当我移动顶级 Pane 组件中的 slider 以使左侧两个 TreeView 变小时,如果宽度太小而无法容纳列中的文本,我希望它们会被剪裁在右侧。相反,看起来整个 TreeView(两者)都向左滑动到窗口边界之外。这是非常违反直觉的,更重要的是,隐藏了扩展器,这是最先隐藏的东西。

resize behavior

如上图所示,当我向左拖动垂直 slider 时,左侧两个 TreeView 中的列都会滑到窗口“外部”;图片的左边界也是窗口的左边界。

此行为显然取决于列内值的最大大小,也就是说,仅在最长值不再适合视口(viewport)后才开始“滑动”,因此看起来好像是 TreeView 或其中的列它有一些其他组件无法缩小的最小尺寸。不过,我已将所有可能相关的最小尺寸设置为 0,以防万一(尽管它也不适用于默认的不存在最小尺寸)。

我希望调整 TreeView 及其列的大小,并在必要时隐藏右侧值的一部分,而不是这种行为。但似乎我在 Gtk 文档和 Glade UI 中找不到任何对我有帮助的东西。

我使用 Python 和 pygobject/Gtk3,并且还使用 Glade 交互式构建 UI。

最佳答案

(很可能)是 CellRendererText 禁止列收缩。尝试将其 ellipsize 属性设置为 Pango.EllipsizeMode.END,如本示例所示:

from gi.repository import Gtk, GObject, GLib, Pango

list_store = Gtk.ListStore(str)

window = Gtk.Window.new(Gtk.WindowType.TOPLEVEL)
paned = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL)

tree = Gtk.TreeView.new()
tree.set_model(list_store)
rend = Gtk.CellRendererText()
rend.set_property("ellipsize", Pango.EllipsizeMode.END)
column = Gtk.TreeViewColumn("title", rend, text=0)
column.set_resizable(True)
column.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
tree.append_column(column)

for i in range (11):
list_store.append(['ddt ' * 50])

paned.add1(tree)
paned.add2(Gtk.Label.new("hello"))
window.add(paned)

window.connect("destroy", Gtk.main_quit)
window.show_all()
Gtk.main()

关于python - 禁用 TreeView 列 "minimum size"行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54920495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com