[pyar] [pygtk] Treeviews, button_press_event y .get_selection().get_selected()

N Cis n.cis_92 en hotmail.com
Jue Dic 2 20:56:50 ART 2010


Hola, estoy intentado hacer un menu que aparezca al hacer segundo click en un elemento de un treeview. El menu que se genera tiene que hacer diversas cosas dependiendo de la fila que fue seleccionada. El tema es que no se por que tiene como un lag, y me da la informacion de la fila que estaba antes seleccionada.

Paso la parte del codigo (es una app media complicadita, en la fue tomando ideas de emesene, por si alguien le interesa: http://github.com/NickCis/Okeykoclient):

En una parte se crea el TreeView:
        mensajeslist = gtk.TreeView(self.inbox_store)
        mensajeslist.set_headers_visible(False)
        mensajeslist.connect("row-activated", self.mostrarmensaje)
        mensajeslist.connect("button_press_event", self.popUpMenMenu, 'in')

Y las funciones a las que se hace refencia son las siguientes:

    def popUpMenMenu(self, widget, event, box):
        if event.type == gtk.gdk.BUTTON_PRESS: # Single click
            if event.button == 3: # Right Click - Show popup
                print "Right Click"
                #self.popMenuBuilder(widget, box)
                menu = self.popMenuBuilder(widget, box)
                menu.popup(None, None, None, event.button, event.time)
                #self.menu.popup(None, None, None, event.button, event.time)

    def popMenuBuilder(self, treeView, box):
        listStore, lIter = treeView.get_selection().get_selected() #Croe qe aca esta el problema no me devuelve la info de la
        selec = listStore.get(lIter, 2, 5)                                           #fila donde se dio el segundo click, por que lo tendria que reemplazar?
        menu = gtk.Menu()
        menuItemRes = gtk.MenuItem("Responder")
        menuItemRes.connect('activate', self.popMenuCallb, 'res', selec)

        menuItemFav = gtk.MenuItem("Favoritos")
        menuItemFav.connect('activate', self.popMenuCallb, 'fav', selec)

        menuItemAg = gtk.MenuItem("Agegar a Agenda")
        menuItemAg.connect('activate', self.popMenuCallb, 'ag', selec)

        menuItemBor = gtk.ImageMenuItem( gtk.STOCK_DELETE )
        if box == 'in':
            menuItemBor.connect('activate', self.popMenuCallb, 'borIn', selec)
        elif box == 'out':
            menuItemBor.connect('activate', self.popMenuCallb, 'borOut', selec)
        menu.append(menuItemRes)
        menu.append(menuItemFav)
        menu.append(menuItemAg)
        menu.append(menuItemBor)
        menu.show_all()
        return menu

    def popMenuCallb(self, menuitem, action, args):
        if action == "res":
            self.redactar_ventana(None, args[0])
        elif action == "fav":
            pass
        elif action == "ag":
            pass
        elif action == "borIn":
            self.__Okeyko.inbox_bor(args[1])
        elif action == "borOut":
            pass
 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20101202/a65ad3b8/attachment.html>


More information about the pyar mailing list