Python GTK从树视图中获取选定的值

时间:2017-07-11 04:47:51

标签: python python-2.7 python-3.x gtk gtk3

我正在开发一个迷你GUI项目,我目前正在努力弄清楚如何从列表中获取选定的值,然后将该值返回到main函数,以便我可以在其他地方使用该值。请有人帮帮我!!!!

    ####

    self.device_list_store = gtk.ListStore(str,str,str,str,str)
    for device in self.get_dev_list():
        self.device_list_store.append(list(device))

    device_list_treeview = gtk.TreeView(self.device_list_store)

    selected_row = device_list_treeview.get_selection()
    selected_row.connect("changed",self.item_selected)

    ####

    def item_selected(self,selection):
         model,row = selection.get_selected()
         if row is not None:
             selected_device = model[row][0]

目前, item_selected 函数没有返回任何内容,我想将 selected_device 返回到main函数,所以我也可以在其他函数中使用它。

编辑:我已编辑上述代码以删除格式错误@jcoppens

1 个答案:

答案 0 :(得分:0)

As you can see in the documentation,使用一个参数item_selected调用tree_selection函数。但是如果你在一个类中定义函数,它也需要self参数,这通常是自动添加的。在你的(令人困惑的)例子中,没有定义类,所以我怀疑问题是你的程序是不完整的。

另外,我怀疑你在for循环中不想要device_list_treeview = gtk.T...

for device in self.get_dev_list():
        self.device_list_store.append(list(device))
        device_list_treeview = gtk.TreeView(self.device_list_store)

我怀疑你希望selected_device = mod...缩进if

 if row is not None:
 selected_device = model[row][0]

请在完整的程序中转换您的示例,并正确格式化。

BTW:item_selected不是信号处理程序的好名字。如果项目未被选中,也会调用它(这就是为什么信号被调用'更改')

重要:即使您应该先阅读basic Python tutorialsGtk tutorials,也应考虑使用lazka's excellent reference for all the Python APIs。页面上有一个链接可以完全下载并在您的计算机中随身携带。