2013-05-12 74 views
1

我有了这个层次中GTKTreeView越来越GtkTressStore父母从孩子蟒蛇

-Title 
---Header 
------numbers a 
------numbers b 
------numbers c 

当我点击了一些我想要打印头

为了得到一个孩子,我的父使用类似

number_parent=GtkTreeStore.get_iter_first() 
model=GTKTreeView.get_model() 
parent=model.get_value(number_parent,0) 

但这只是打印出标题而不是标题。

我试图

value=GtkTreeStore.get_iter(path) 
GtkTreeStore.get_value(value,0) 

其中路径是一个元组,如(0:0:3)

但这只是打印出来的数量。

有没有办法让我得到标题?

+0

从你描述的模型看起来,'Header'是'Title'的一个孩子,第一个iter将指向'Title'。 'model.get_value(model.iter_children(number_parent),0)'给了你什么? – 2013-05-12 12:36:59

+0

好吧,我试过你的方法another.anon.crowd它的作品。但如果我说头1和头2.它只打印头1,即使我点击头2的孩子。 – zeref 2013-05-12 14:04:43

+0

是的,这是预期的结果。当你得到第一个iter时,你会得到'Title'。现在'标题'将有孩子'Header1','Header2'等等(假设你提到的上述结构重复)。你必须通过调用'iter_next'来遍历其他的'Headers#'。如果你有路径,你可以将它转换为字符串,并删除最后一个条目以获得父路径,即清除直到':'反向,例如。 '0:0:1'→0:0→1:2:3→1:2。你可以从字符串中得到它,它会给出所需的'Header#'。顺便说一句,你在做这一切?在一些信号回调? – 2013-05-13 18:03:12

回答

0

OK我得到感谢解决another.anon.coward

我决定使用get_path方法。

path=GtkTreeStore.get_path(name) 
path_value=str(path) 

我发现字符串切片路径直接不起作用。

number_title_path=GtkTreeStore.get_iter(path_value[:1]) 
number_header_path=GtkTreeStore.get_iter(path_value[:3]) 
number_path=GtkTreeStore.get_iter(path_value) 

设置模式

model=GtkTreeView.get_model() 
number_title=model.get_value(number_title_path,0) 
number_header=model.get_value(number_header_path,0) 
number=model.get_value(number_path,0) 

这一切都是在 'on_treeview1_button_press_event' 信号事件来完成。

所以当我点击数字时,我会找回标题和标题。