[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