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