【问题标题】:Python GTK get selected value from the treeviewPython GTK 从树视图中获取选定的值
【发布时间】:2017-07-11 04:47:50
【问题描述】:

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

    ####

    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 返回到主函数,这样我也可以在其他函数中使用它。

编辑:我已经编辑了上面的代码以删除格式错误@jcoppens

【问题讨论】:

  • 为什么不把return selected_device 作为item_selected 函数的最后一行。并阅读some basic Python tutorialsGtk tutorials
  • 感谢您的回复,我尝试返回 selected_device ,并在主函数中调用 item_selected 函数,它不起作用,错误消息显示 TypeError: item_selected() 恰好需要 2 个参数(1 个给定)。我可以理解我需要向该函数传递一些参数,但问题是我不知道该函数需要使用哪些参数,希望这对您有意义。

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


【解决方案1】:

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

另外,我怀疑你不希望 device_list_treeview = gtk.T... 出现在 for 循环中:

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]

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

顺便说一句:item_selected 不是信号处理程序的好名字。如果项目未被选中,它也会被调用(这就是为什么信号被称为'changed')!

并且重要:尽管您应该首先阅读basic Python tutorialsGtk tutorials,然后您应该考虑使用lazka's excellent reference for all the Python APIs。页面上有一个链接,可以将其完全下载并保存在您的计算机中。

【讨论】:

  • 非常感谢,问题已经解决了。我会阅读您建议的培训材料,以确保我掌握了所有这些基本内容。
  • 太棒了。我已编辑您的原始问题以消除格式问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-04
  • 2012-12-10
  • 1970-01-01
相关资源
最近更新 更多