Agrega esto: *self.win.connect('button-press-event', self.button_press_event)* Despues de esto: *self.win.add_events(gtk.gdk.BUTTON_PRESS_MASK) * (¿Eso es necesario?, Creo que no hace falta)
Saludos. Ignacio Rodríguez 2013/10/17 Pablo Rodríguez <oi...@web.de> > Hola a todas y todos, > > tengo un pequeño programilla del que ni me acuerdo cómo escribí. (El > ejemplo está abajo.) > > Todo funciona, pero necesito implementar "button_press_event()". Me temo > que no tira de ningún modo. > > De lo que sé (que es muy poco), debería funcionar. > > ¿Alguien sería tan amable de indicarme el error? > > Sé que es una cuestión específica de PyGTK. Hace tres meses que lo he > preguntado en la lista y no he tenido respuesta. > > Agradecería mucho vuestra ayuda. > > Saludos, > > > Pablo > > > import gnomevfs > import gtk > import pygtk > try: > import poppler > except: > print "poppler is not available" > import sys > import cairo > import gtk.glade > > class rec_presentation: > def __init__(self): > > uri = gnomevfs.make_uri_from_shell_arg(sys.argv[1]) > > self.filename = sys.argv[1] > > self.document = poppler.document_new_from_file (uri, None) > self.n_pages = self.document.get_n_pages() > self.page_selector = self.document.get_page(0) > self.current_page = 0 > > self.gui = gtk.glade.XML("recslides.glade","mainwindow", > domain="recslides") > self.win = self.gui.get_widget("mainwindow") > self.area = self.gui.get_widget("pdfdocument_area") > self.gui.signal_autoconnect(self) > self.win.add_events(gtk.gdk.BUTTON_PRESS_MASK) > > self.width, self.height = self.win.get_size() > self.page_width, self.page_height= self.page_selector.get_size() > > self.surface = cairo.ImageSurface(cairo.FORMAT_RGB24, > int(self.width), > int(self.height)) > > black = gtk.gdk.color_parse("black") > self.area.modify_bg(gtk.STATE_NORMAL, black) > self.area.set_size_request(int(self.width), int(self.height)) > > self.win.show_all() > > def button_press_event(self, widget, event): > if event.button == 1: > print 'Clicked at x={0}, y={0}'.format(event.x, event.y) > > self.win.connect('button-press-event', button_press_event) > > def on_expose_event(self, widget, event): > add_x = 0 > add_y = 0 > > if (self.area.allocation.width/self.page_width) < > (self.area.allocation.height/self.page_height): > self.scale = self.area.allocation.width/self.page_width > else: > self.scale = self.area.allocation.height/self.page_height > > if (self.area.allocation.width/self.page_width) > > (self.area.allocation.height/self.page_height): > add_x= > > int(((self.area.allocation.width-(self.page_width*self.scale))/2)/self.scale) > else: > add_y= > > int(((self.area.allocation.height-(self.page_height*self.scale))/2)/self.scale) > > cr = widget.window.cairo_create() > cr.set_source_surface(self.surface) > cr.set_source_rgb(1, 1, 1) > > if self.scale != 1: > cr.scale(self.scale, self.scale) > > cr.translate(add_x, add_y) > cr.rectangle(0, 0, self.page_width, self.page_height) > cr.fill() > self.page_selector.render(cr) > > def gtk_main_quit(self, widget, event): > gtk.main_quit() > > def main(self): > gtk.main() > > > rec = rec_presentation() > rec.main() > > -- > http://www.ousia.tk > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ >
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/