我正在开发一个迷你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
答案 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 tutorials和Gtk tutorials,也应考虑使用lazka's excellent reference for all the Python APIs。页面上有一个链接可以完全下载并在您的计算机中随身携带。