[Python-es] [pygtk] pinchar el ratón no funciona

Ignacio Rodríguez nachoel01 en gmail.com
Sab Oct 19 11:35:06 CEST 2013


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 <oinos en 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 en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20131019/f12c7b0e/attachment.html>


Más información sobre la lista de distribución Python-es