6

我有一个我的类 A 的对象列表 L 。这个类实现__str__/ __repr__,所以每个对象都有它自己的字符串表示(不一定是唯一的)。我在 pygtk 中有一个 GUI,其中有一个只有一列的 TreeView 小部件。我想用 L 中对象的字符串表示来填充它,但是我想将选定的项目作为对象而不是字符串。有没有办法让 TreeView 存储对象列表,但将它们显示为刺?如果不是,那么知道在 TreeView 中选择了哪些对象的最佳方法是什么?问题还在于,根据某些条件,我可以不使用整个 L 填充 TreeView,而是使用它的一些子列表,因此 TreeView 中的项目索引不会对应于 L 中的索引。

4

3 回答 3

6

您可以将对象存储在一列 ( gobject.TYPE_PYOBJECT) 中,将字符串表示形式存储在第二列中,然后仅在树视图中显示第二列。类似于这里所做的:http: //www.learningpython.com/2006/09/02/extending-our-pygtk-application/

于 2011-07-19T19:09:44.247 回答
2

如果您的 Glade 是 3.7.0 或更新版本,您可以键入“PyObject”(不带引号)作为 ListStore 的列类型。然后使用set_cell_data_func从模型中检索对象并将其表示形式作为文本传递给 CellRenderer。无需同步字符串列,无需担心索引。

于 2011-07-25T12:30:32.287 回答
0

如果字符串是唯一的,您可以使用字典通过将字符串用作键来将字符串与对象链接。在这种情况下,您可以通过其字符串找到对象。

于 2011-07-19T23:02:00.847 回答