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/