Я пишу приложение 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
и self.blacklistServer
, но я тоже не знаю, как это сделать.