Python GTK 从树视图中获取选定的值
Python GTK get selected value from the treeview
我正在做一个迷你 GUI 项目,我目前正在努力弄清楚如何从列表中获取选定的值,然后 return 将该值传递给主函数,以便我可以在中使用该值别的地方 。有人可以帮我吗!!!!
####
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 函数没有 returning 任何东西,我想 return selected_device 回到主函数,这样我也可以在其他函数中使用它。
编辑: 我编辑了上面的代码以删除格式错误@jcoppens
As you can see in the documentation,调用 item_selected
函数时带有一个参数,tree_selection
。但是如果你在 class 中定义函数,它也需要 self
参数,这通常是自动添加的。在您的(令人困惑的)示例中,没有定义 class,所以我怀疑问题是您的程序不完整。
此外,我怀疑您不希望在 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]
请将您的示例转换成完整的程序,并正确格式化。
顺便说一句:item_selected
不是信号处理程序的好名称。如果项目未被选中,它也会被调用(这就是信号被称为 'changed' 的原因)!
和重要:尽管您应该先阅读basic Python tutorials and Gtk tutorials, you should then consider using lazka's excellent reference for all the Python APIs。页面上有 link 可以完整下载并放在您的计算机上。
我正在做一个迷你 GUI 项目,我目前正在努力弄清楚如何从列表中获取选定的值,然后 return 将该值传递给主函数,以便我可以在中使用该值别的地方 。有人可以帮我吗!!!!
####
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 函数没有 returning 任何东西,我想 return selected_device 回到主函数,这样我也可以在其他函数中使用它。
编辑: 我编辑了上面的代码以删除格式错误@jcoppens
As you can see in the documentation,调用 item_selected
函数时带有一个参数,tree_selection
。但是如果你在 class 中定义函数,它也需要 self
参数,这通常是自动添加的。在您的(令人困惑的)示例中,没有定义 class,所以我怀疑问题是您的程序不完整。
此外,我怀疑您不希望在 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]
请将您的示例转换成完整的程序,并正确格式化。
顺便说一句:item_selected
不是信号处理程序的好名称。如果项目未被选中,它也会被调用(这就是信号被称为 'changed' 的原因)!
和重要:尽管您应该先阅读basic Python tutorials and Gtk tutorials, you should then consider using lazka's excellent reference for all the Python APIs。页面上有 link 可以完整下载并放在您的计算机上。