【问题标题】:Python3 Gtk3+: How to hide a cell of a rowPython3 Gtk3+:如何隐藏一行的单元格
【发布时间】:2016-05-05 14:09:42
【问题描述】:

我已经搜索了整个互联网,但没有发现任何有用的信息。我开始认为这是不可能的,但肯定有人有这种要求。

我的应用:

  • 我使用 TreeStore 列出父(文件夹)和子(文件);
  • 最小化列列表,我将有名称,路径(隐藏列), 大小(仅与孩子相关 - 很容易为父母屏蔽,因为它是 str() 类型),进度条(我希望它显示 - 显示在 TreeView 仅适用于儿童,不适用于父母)。

为什么我需要这个功能:

  • 我想做一个应用程序,它会为我定义的 TreeStore 中的每个文件显示一个进度条;
  • 作为 TreeStore,文件将有一个父级(文件夹);
  • 我不想显示文件夹的进度条,因为它会 在我看来毫无用处,而且看起来很糟糕。

我已经研究了所有可用的选项/功能,但找不到仅对特定行中的特定单元格执行此操作的选项/功能。

我发现的唯一功能是接近我需要的(但仍然无法使用)是:

Gtk.CellRenderer.set_visible(CellRendererProgress, False) - 但这会使整个 cellrenderer 不可见;

Gtk.TreeViewColumn.set_visible(False) - 使整列不可见;

将“无”设置为“进度”列的值仍会显示一个空的进度条,否则会引发错误。

我已经想过如何通过绕过这种不可能来实现这一点,但我找不到答案。我没有想法。

【问题讨论】:

    标签: python gtk cell gtk3 cellrenderer


    【解决方案1】:

    您应该在树形存储中创建一个隐藏列,告诉您是否在每一行中显示进度条。然后将该列绑定到单元格渲染器的可见性,如下所示:

    progress_bar_tree_view_column.add_attribute(progress_bar_renderer, 'visible',
        NUMBER_OF_MY_HIDDEN_COLUMN)
    

    【讨论】:

    • 谢谢。在我搜索的所有地方,我发现只有以下道具应该适用于 Gtk.CellRendererProgress:inverted、pulse、text、text-xalign、text-yalign 和 value。我什至没有尝试“可见性”属性,因为我尝试了另一个渲染一个未在“developer.gnome.org/gtk3”上列出的属性,并且它引发了一个找不到属性的错误。现在我明白这个属性(“可见”)是从“Gtk.CellRenderer”继承的,应该适用于所有渲染器(文本、组合等)。
    猜你喜欢
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多