Bueno, esto es lo que quiero hacer...
En una ventana tenemos un conjunto de preguntas que cambian su numero al presionar un boton (como un contador); el codigo que llevo lo e escrito en Python con el modulo Tkinter, y es este:
- Código: Seleccionar todo
#ventana con num pregunta
from Tkinter import*
#importamos los modulos de Python nesesarios
import tkMessageBox
#Creamos la clase del contador y que importara las ventanas
#escritas con pygame
class pregun:
def __init__(self, pregunta):
self.pregunta = pregunta
print "Estas en la pregunta", pregunta
def adelan(self):
if self.pregunta > 0:
self.pregunta -= 1
lala = "Quedan", self.pregunta, "preguntas"
lbr = Label(root, text=lala)
lbr.grid(row=2, column=2)
else:
print "no quedan preguntas"
def atras (self):
if self.pregunta <= 4:
self.pregunta += 1
lala = "Quedan", self.pregunta, "preguntas"
print lala
lbr = Label(root, text=lala)
lbr.grid(row=2, column=2)
else:
print "no quedan preguntas"
###definimos el valor, en este caso, del numero de preguntas.
pre = pregun(5)
#definimos la funcion que enviara un mensaje
#para precuntar si cerrara la ventana en caso de que la persona
#haya presionado el boton por error
def callback():
if tkMessageBox.askokcancel("Salir", "Esta seguro de Salir?,\
presione OK"):
root.destroy()
#Aqui invocamos la ventana y colocamos su titulo
root = Tk()
root.title("Pruevavil")#aqui el titulo
#protocolo de el mensage de advertencia
root.protocol("WM_DELETE_WINDOW", callback)
#El mensage principal
lala = "Biembenido \n Pulsa siguiente para comenzar"
lbr = Label(root, text=lala)
lbr.grid(row=2, column=2)
#definimos los botones Anterior y Siguiente
atras = Button(root, text="anterior", command=pre.atras, width=20)
atras.grid(row=3, column=0)
siguiente = Button(root, text="siguiente", command=pre.adelan, width=20)
siguiente.grid(row=3, column=3)
#creamos el bucle principal de la ventana
root.mainloop()
Mi problema es con la parte de importar el modulo escrito con pygame, el cual es solo una "Maximisacion" de la del ejemplo arrastrar soltar reducida a un solo archivo:
- Código: Seleccionar todo
#VENTANA EN PYGAME
!/usr/bin/env python
try:
import pygame
import os
import sys
from pygame.locals import *
except ImportError, err:
print "No se puede cargar el modulo %s" %(err)
sys.exit (2)
#Esta es la parte del que antes era el archivo utils
def load_image (image):
"Carga una imagen e intenta optimizarla"
#Se especifica la direcion de la carpeta con las imagenes (../data)
path = os.path.join ("../data", image)
try:
image = pygame.image.load(path)
if image.get_alpha is None:
image = image.convert()
else:
image = image.convert_alpha()
except pygame.error, message:
print 'Cannot load image:', path
raise SystemExit, message
return image, image.get_rect()
#La clase de las figuras que se pueden arrastrar
class Figura (pygame.sprite.Sprite):
"Representa un objeto que se puede `arrastar` mediante el mouse "
def __init__ (self, image, x, y):
pygame.sprite.Sprite.__init__(self)
self.image, self.rect = load_image (image)
self.seleccionado = 0
self.rect.x = x
self.rect.y = y
def update (self):
x_abs, y_abs = pygame.mouse.get_pos ()
b1, b2, b4 = pygame.mouse.get_pressed ()
if self.seleccionado:
x, y = pygame.mouse.get_rel ()
self.rect.move_ip (x, y)
else:
if self.rect.collidepoint (x_abs, y_abs) and b1:
pygame.mouse.get_rel ()
self.seleccionado = 1
if not b1:
self.seleccionado = 0
#Una clase que modifique, en que las imagenes cargadas NO se pueden mover
class resp (pygame.sprite.Sprite):
"Representa un objeto que NO se puede `arrastar` mediante el mouse "
def __init__ (self, image, x, y):
pygame.sprite.Sprite.__init__(self)
self.image, self.rect = load_image (image)
self.seleccionado = 0
self.rect.x = x
self.rect.y = y
def update (self):
x_abs, y_abs = pygame.mouse.get_pos ()
b1, b2, b4 = pygame.mouse.get_pressed ()
if self.seleccionado:
x, y = pygame.mouse.get_rel ()
self.rect.move_ip (x, y)
else:
if self.rect.collidepoint (x_abs, y_abs) and b1:
pygame.mouse.get_rel ()
#Esta es la parte modificada (el valor de seleccionado es igual a cero
self.seleccionado = 0
if not b1:
self.seleccionado = 0
#Donde se define la ventana
def main ():
pygame.init()
screen = pygame.display.set_mode ((640, 480), 16)
pygame.display.set_caption ('Ex-grafic')
fondo = pygame.Surface (screen.get_size ())
fondo = fondo.convert ()
fondo.fill ((200, 200, 200))
screen.blit (fondo, fondo.get_rect ())
pygame.display.flip ()
# Genera una lista de sprites y los gestiona con Dirty Rectangles
lista_figuras = pygame.sprite.RenderUpdates ()
#figuras con la clase que se pueden mover
lista_figuras.add (Figura ('face.png', 20, 20))
lista_figuras.add (Figura ('mail.png', 20, 100))
lista_figuras.add (Figura ('office.png', 20, 200)
lista_figuras.add (Figura ('trash.png', 20, 300))
lista_figuras.add (Figura ('cd.png', 20, 400))
#figura que no se puede mover
lista_figuras.add (resp ('resp.png', 500, 200))
clock = pygame.time.Clock ()
while 1:
clock.tick (100)
for event in pygame.event.get ():
if event.type == QUIT:
return
lista_figuras.update ()
# Actualizacion grafica
lista_figuras.clear (screen, fondo)
pygame.display.update (lista_figuras.draw (screen))
if __name__ == '__main__': main()
Mi duda es la importacion, y como llevar un registro de las coliciones de las figuras que puedo arrastar y la que no, por que la verdad no tengo idea de como hacerlo

X¬d