我正在使用 PyGObject 但我认为这是一个可以适用于所有 GTK 的问题,所以如果有人知道如何使用 C 或任何东西也应该在 python 中工作。
我有两个树视图,活动和非活动,我从 Sqlite 数据库加载数据,我可以交换和拖放项目从一个到另一个。这只是一个美学的事情,如果我单击一个树视图上的一个项目,我希望取消选择另一个之前选择的项目。
似乎没有人必须做类似的事情,因为我在网上没有找到任何关于它的信息。
我正在使用 PyGObject 但我认为这是一个可以适用于所有 GTK 的问题,所以如果有人知道如何使用 C 或任何东西也应该在 python 中工作。
我有两个树视图,活动和非活动,我从 Sqlite 数据库加载数据,我可以交换和拖放项目从一个到另一个。这只是一个美学的事情,如果我单击一个树视图上的一个项目,我希望取消选择另一个之前选择的项目。
似乎没有人必须做类似的事情,因为我在网上没有找到任何关于它的信息。
冒着过于基本的风险(也许我误解了问题),要操作树视图选择,您使用GtkTreeSelection
从GtkTreeView.get_selection
. 您可以附加到此对象上的信号,更改当前选择等。
要关闭另一个视图中的选择,您可以获取其选择模式属性并将其设置为GTK_SELECTION_NONE
。要在单击时重新打开它,我的想法是您可以捕获grab-focus
信号,在该视图中将选择模式设置为单一,并在另一个视图中将选择模式设置为无:
(connect view-1 'grab-focus
(lambda args
(set-mode (gtk-tree-view-get-selection view-1) "GTK_SELECTION_SINGLE")
(set-mode (gtk-tree-view-get-selection view-2) "GTK_SELECTION_NONE")))
(该代码使用了guile-gnome包装器,但概念在任何语言绑定中都应该是相同的。)这种方法的一个问题是,现在为了进行选择,您必须单击树形视图两次 - 一次以获取焦点,然后再次进行选择。