2011-05-25 15 views
5

Mi programa original utilizado input, así:detener un programa en Python hasta que un usuario realiza una acción

n = input("Enter your favorite number: ") 
# do stuff with number 

Ahora, he cambiado a una interfaz gráfica de usuario GTK, pero aún así quieren que el lograr la misma cosa. Ahora mira esta pieza muy similar de código:

n = myWindow.getNumber() 
# do stuff with number 

¿Sería posible escribir un método getNumber() que sólo devuelve después de que el usuario presiona un botón de envío en la ventana? (Como el funcionamiento de la función de input) o esto es mi única opción:

def callback(widget, event): 
    n = myWindow.inputWidget.getValue() 
    # do stuff with number 

n = myWindow.getNumber(callback) 

Actualización: Estoy mirando para hacer esto sin un gtk.Dialog, ya que no quiero un diálogo molestando cada vez Se requiere la entrada del usuario.

Respuesta

3

Lo que necesita es un cuadro de diálogo modal. No conozco GTK (o PyGTK) en absoluto, pero parece que hay un ejemplo in the documentation.

+0

Gracias, pero un diálogo modal simplemente impide que el usuario interactúe con cualquier widgets fuera del diálogo. –

+1

@Sam: hasta donde yo sé, el método de ejecución de gtk.Dialog bloquea el programa y solo lo devuelve cuando recibe una respuesta (no hay necesidad de una devolución de llamada). Subclassing gtk.Dialog puede ser lo que necesita. –

+0

@Jong, creo que tienes razón. –

Cuestiones relacionadas