Python - necesito ejecutar una funcion que me de las coordenadas al hacer click en una imagen (wxpython)

 
Vista:
sin imagen de perfil

necesito ejecutar una funcion que me de las coordenadas al hacer click en una imagen (wxpython)

Publicado por zephon7z (13 intervenciones) el 17/07/2014 23:06:25
estoy realizando un juego en pygame, y para no tardarme demasiado en editar los niveles estoy realizando un programa en WXPYTHON con el cual voy a darle la ubicación a cada elemento del nivel (sprite).

El editor de niveles consta con un área que tiene un staticbitmap vacío además de unos scrollbars por si la imagen es muy grande, a este le llega una superficie de pygame (esto ya lo resolví y puedo enviarle una imagen o superficie de pygame) que debería mostrar la imagen del sprite en el escenario para luego generar un texto plano con las coordenadas de los elementos.

El problema consiste en que al presionar algún botón del mouse sobre una imagen no se genera ningún tipo de evento (EVT_BUTTON, EVT_LEFT_DOWN, EVT_LEFT_UP...), si alguien tiene una ejemplo de como realizarlo me ayudaría mucho.

de antemano muchísimas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

necesito ejecutar una funcion que me de las coordenadas al hacer click en una imagen (wxpython)

Publicado por zephon7z (13 intervenciones) el 19/07/2014 05:15:38
pude solucionar el problema de la siguiente manera:
como presionar sobre un staticbitmap no genera eventos, trate de dibujar sobre un panel que si me genera el evento EVT_LEFT_DOWN y resulto, pude dibujar un rectángulo con la superficie de pygame que a su vez contenía una imagen, además de obtener la coordenadas con respecto al mismo panel, por eso agregue un boton para poder verificar x e y.
aquí el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/usr/bin/env python
# -*- coding: utf-8 -*- 
 
###########################################################################
## Python code generated with wxFormBuilder (version Oct  8 2012)
## http://www.wxformbuilder.org/
##
## PLEASE DO "NOT" EDIT THIS FILE!
###########################################################################
 
import wx,pygame
 
###########################################################################
## Class MyFrame1
###########################################################################
 
class MyFrame1 ( wx.Frame ):
 
	def __init__( self, parent ):
		wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 500,300 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )
 
		self.Centre()
		self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )
 
		bSizer3 = wx.BoxSizer( wx.HORIZONTAL )
 
		self.area_dibujo = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
		self.boton = wx.Button(self, label="1 boton")
		bSizer3.Add(self.boton,0,wx.ALL, 5)
		bSizer3.Add( self.area_dibujo, 1, wx.EXPAND |wx.ALL, 5 )
		self.ctx = wx.PaintDC(self.area_dibujo)
 
		self.SetSizer( bSizer3 )
		self.Layout()
 
		self.Centre( wx.BOTH )
 
		# Connect Events
		self.area_dibujo.Bind( wx.EVT_LEFT_DOWN, self.dibujar )
 
	def __del__( self ):
		pass
 
 
	# Virtual event handlers, overide them in your derived class
	def dibujar( self, event ):
		#se crea la superficie con la imagen en pygame
		imagen = pygame.image.load("imagen.jpg")
		ancho,alto = imagen.get_size()
		superficie = pygame.Surface((ancho,alto))
		superficie.blit(imagen,(0,0))
 
		#se pasa la imagen de pygame a una cadena de texto
		cadena = pygame.image.tostring(superficie,"RGB")
		bitmap = wx.ImageFromData(ancho,alto,cadena)
		imagen2 = wx.BitmapFromImage(bitmap)
 
		#se crea el contexto
		self.ctx = wx.PaintDC(self.area_dibujo)
		self.ctx.SetPen(wx.Pen("#000",1,wx.TRANSPARENT))
		#se dibuja en el panel
		brocha = wx.BrushFromBitmap(imagen2)
		self.ctx.SetBrush(brocha)
		self.ctx.DrawRectangle(0,0,1500,1500)
 
		#datos de la posicion del mouse en el panel
		print event.GetPosition()
 
 
app = wx.App()
frame = MyFrame1(None)
frame.Show()
app.MainLoop()

espero ayudar a quien este buscando sobre como obtener la coordenadas del puntero en una imagen o como agregar una imagen de pygame a wxpython.
para probar el codigo obviamente hay que tener instalado wxpython y pygame ademas de tener una imagen de titulo imagen.jpg
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

necesito ejecutar una funcion que me de las coordenadas al hacer click en una imagen (wxpython)

Publicado por xve (1646 intervenciones) el 19/07/2014 09:25:14
Gracias por compartirlo zephon7z!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar