问题标签 [gtktreeview]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何将 gtk.ListStore 项目与我自己的模型相关联
我有一个项目对象列表,我显示在GtkTreeView
. 当用户双击 TreeView 中项目的行时,我试图打开一个包含项目详细信息的对话框。
现在,我从 TreeView(这是项目的名称)通过 获取选定的值get_selection()
,并在我自己的列表中按名称搜索该项目,以将选择与我自己的模型相关联。
但是,这感觉不太对(另外,它假定项目的名称是唯一的),我想知道是否有更优雅的方式来做这件事。
python - 对模型进行过滤和排序的 GtkTreeView 的拖放支持
正如标题所示,我有一个对其gtk.TreeView
模型进行排序和过滤的模型。根据文档:“拖放行的重新排序仅适用于未排序的商店。”。给出的唯一其他信息与使用外部资源有关,在这种情况下我不需要。
无论如何,我尝试实现它,为接收到的拖放信号和拖放信号提供处理程序,但仍然出现以下错误:
GtkWarning:当使用不支持 GtkTreeDragDest 接口并启用拖放的模型时,您必须覆盖 GtkTreeView 上的默认 'drag_data_received' 处理程序。最简单的方法是连接到“drag_data_received”并在信号处理程序中调用 g_signal_stop_emission_by_name() 以防止默认处理程序运行。查看 gtktreeview.c 中默认处理程序的源代码,了解您的处理程序应该做什么。(gtktreeview.c 位于 GTK 源代码中。)如果您从 C 以外的语言使用 GTK,则可能有一种更自然的方式来覆盖默认处理程序,例如通过派生。
尽管如此,虽然我还没有实现它,但看起来我可以让它工作,因为它不会崩溃。尽管如此,这是一个我宁愿没有的警告。
那么,是否有 python 等价物g_signal_stop_emission_by_name
,或者我是否以错误的方式处理这个问题?
python - 使用 python 在 GtkTreeview 中更改所选项目的颜色
我有一个包含 pygtk.treeview 的对话框,用于按优先级列出任务。每行都有基于该优先级设置的背景颜色,例如,最高优先级具有浅红色背景。
行选择颜色不是那么容易改变的。我可以使用 来设置它treeview.modify_base(gtk.STATE_SELECTED, "#C4C4C4")
,但没有颜色与用于增强优先级概念的颜色搭配得很好。
我的想法是将选择颜色更改为用作普通行背景的颜色的稍暗版本,因此在上面的示例中,这将是更深的红色。我尝试调用上面的函数来响应treeselection的changed
信号,它可以工作,但是闪烁很严重。
另一个想法是将选择更改为透明并在其周围放置边框,但据我所知,这是不可能的。
- 如何以上述方式更改选择颜色而不会闪烁?
- 我可以通过在行周围只有一个边框来更改显示选择吗?
注意:我知道这违反了用户选择的主题。我觉得我有一个很好的理由。用颜色表示优先级可以立即识别。选择颜色隐藏了这一点。如果您有其他建议,我愿意接受,但它需要保持用户可以轻松识别优先级。
python - PyGTK TreeColumns 所有精确重复
我写了一个简单的 PyGTK 脚本来在 TreeView 中显示一些基本的进程信息:
我的问题是所有列的值都相同。
笔记:
- 显然这与第一列相关(即,如果我更改第一列的数据,那么这就是所有其他数据的结果)
(将在发布建议时添加更多内容)
gtk - 由于排序,GtkTreeView 插入/更新性能损失
在将多行插入 GTK 树视图(使用 PyGTK)或修改多行时,我遇到了性能问题。问题是模型似乎在每次更改(插入/修改)后都会重新使用。这会导致 GUI 挂起几秒钟。通过注释掉模型不排序可以model.set_sort_column_id(SOME_ROW_INDEX, gtk.SORT_ASCENDING)
消除这些问题。
因此,我想在插入或修改模型时禁用排序,然后重新启用它。不幸的是,排序不能用model.set_sort_column_id(-1, gtk.SORT_ASCENDING)
. 使用冻结/解冻功能也不起作用:
那么,如何禁用排序?还是有更好的批量插入/修改方法?
解决方案
感谢他在回答中提供的信息和链接 bobince,我检查了一些替代方案:
1) 虚拟排序
这使时间从大约 11 秒减少到 2 秒。哇!但可能会更好,这仅适用于 1000 行。
2) 更新时删除模型
没有明显差异,11 秒。
3) PyGTK FAQ中的虚拟排序和酷生成器技巧
结果:与解决方案 1) 中估计的 2 秒相同,但 GUI 在此期间做出反应。我更喜欢这种方法。如果需要,可以调整模 200 以使 GUI 或多或少具有反应性。
也许甚至可以进行子类化gtk.TreeStore
以获得更好的结果?还没有尝试过,但选项 3) 现在已经足够好了。
python - PyGtk - TreeView 和选定的行
我有一个 TreeView,当我点击它时,我收到错误:
它只发生在第一次点击。之后它工作正常。我不知道怎么了。这是代码:
c# - 如何设置过滤底层 TreeStore 的 Gtk# TreeModelFilter?
我已阅读“GtkSharp TreeView 教程”,其中作者描述了如何为基础 ListStore 设置和使用 TreeModelFilter(在教程部分“过滤数据”下)。该技术似乎不适用于底层分层 TreeStore。我想过滤多级 TreeStore 并在 TreeView 中显示结果。它给了我一个真正的困难。是否有任何教程、示例或建议?
以下是代码。它与教程的代码基本相同,除了处理 TreeStore 而不是 ListStore 的构造和填充的更改。{TreeStore 用于保存联系人的“姓名”和“电子邮件地址”,分为(并另存为)根“朋友”和“亲戚”的孩子}
[我在 windows vista 上使用 mono 2.6.4 /monodevelop 2.4 / gtk-sharp 2.12。]
python - 每行具有不同组合模型的 GtkTreeviewColumn
我有一组全局值,例如["Foo", "Bar", "Baz", "Quux"]
. my 中的每一行TreeView
代表一个只能处理这些值的子集的实体。例如,第一行可能处理"Foo"
and "Bar"
,第二行可能处理"Bar"
and "Quux"
。我想要一ComboBox
列允许每一行选择它可以处理的值之一。
但是,从我现在的代码来看,整个专栏只能有一个模型ComboBox
:
我只有一次机会为整个专栏设置模型。有没有办法为每一行设置不同的商店,或者以某种方式过滤值?
python - _really_ 禁用 GtkTreeView 搜索
如何真正禁用 gtk treeview 交互式搜索?文档说,set_enable_search(False)
但如果我这样做,CTRL+F仍然会导致出现烦人的搜索弹出窗口。连接start-interactive-search
和返回True
也不起作用。
python - 这可以绘制像 GtkIconView 一样列出的 GtkTreeView 吗?
我正在开发一个用 python 编写的 GTK+ 应用程序。我显然使用 PyGtk。我的申请是关于视频集的。这是一种 F-spot 或 Picasa,但用于视频。
正如您在这两个应用程序中看到的那样,您有一个中心区域,您可以在其中查看所有带有标签缩略图的照片。
在我的应用程序中,我想实现相同的视图。现在我只是使用这个:
Agtk.Table
包含 a VBox
,在VBox
a Pixbuf
(我的视频缩略图)和 aHBox
内,以及在 内,与标签HBox
一样多。Pixbuf
它正在工作,但它很丑陋,而且它似乎不是更好的解决方案。
深入查看文档,我发现了两个我需要的小部件:IconView
和TreeView
. 但是IconView
每个“行”只能显示一个 pixbuf,并且 TreeView 不会显示为像IconView
.
我的问题:有没有办法像 IconView 一样显示 TreeView(在网格中)?您将如何实现在下方排列照片和标签的 F-spot 方式?