私はbutton_press_event
への接続を持つツリービューを使用するpygtkアプリケーションを作成しています。私が理解できないのは、ツリービュー(クリックされた行)に関する情報をgtk.Menu
または別の方法に渡す方法です。 row-activated
シグナルを使用した場合、行と列の情報が引数として渡されますが、これはbutton_press_event
では発生しません。私はその後、self.joinGame
とself.blacklistServer
方法にクリックされた行から情報を渡す必要がありますが、どちらかこれを行う方法がわからないpygtkの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
:ここで問題のコードです。
どのような行が選択されているかに関するこの情報をポップアップメニューに渡すにはどうすればよいですか? –
私は考えることができる2つの方法:あなたは、ツリービューでカスタム信号を登録し、あなたのポップアップにそれに耳を傾けることができます。また、ポップアップへの参照を保持している場合は、値を直接またはメソッドで設定できます。 – XORcist
私は実際にここにこだわっているので、いくつかの例のコードを与えることができます。 –