我正在编写一个使用树视图的 pygtk 应用程序,它与 button_press_event
. 我想不通的是如何将有关树视图的信息(特别是单击了哪一行)传递给一个gtk.Menu
或另一个方法。如果我使用该row-activated
信号,它会将行和列信息作为参数传入,但这不会发生在button_press_event
. 这是有问题的代码:
self.liststore = gtk.ListStore(str,int, int, int,str, 'gboolean')
self.treeview = gtk.TreeView(self.liststore)
self.treeview.connect("button_press_event",self.serverListEvent)
self.treeview.set_search_column(0)
self.draw_columns(self.treeview)
self.blackmenu = gtk.Menu()
self.bitem = gtk.MenuItem("Blacklist server")
self.blackmenu.append(self.bitem)
self.bitem.connect("activate",self.blacklistServer)
self.bitem.show()
def serverListEvent(self,treeview,event):
x = int(event.x)
y = int(event.y)
time = event.time
model = treeview.get_model()
pthinfo = treeview.get_path_at_pos(x, y)
if pthinfo is not None:
path, col, cellx, celly = pthinfo
# Error here for the model with the column
print 'url clicked '+model[col][0]
treeview.grab_focus()
treeview.set_cursor( path, col, 0)
# Popup blacklist menu on right click
if event.button == 3:
self.blackmenu.popup( None, None, None, event.button, time)
# Join game on double click
elif event.type == gtk.gdk._2BUTTON_PRESS:
self.joinGame(treeview,model[col][0])
return True
然后我需要将点击行中的信息传递给self.joinGame
andself.blacklistServer
方法,但也不知道该怎么做。