Obtener valores de múltiples spinboxes GTK

Imagen: http://dl.dropbox.com/u/4900888/GUI.png La fuente y la interfaz de usuario están en los comentarios, debido a "Limitaciones de nuevos usuarios"

Lo siento si no he entendido bien de qué se trata este sitio, pero tengo un problema.

Cuando se presiona el botón en la esquina inferior izquierda, quiero obtener los valores de los tres cuadros de número y guardarlos como variables para usar en una función que se activa con el botón. Estoy realmente en blanco en cuanto a cómo harías esto. Se agradece cualquier ayuda, y se puede proporcionar información adicional si es necesario.

EDITAR: Estoy usando Python y Gtk+ a través de Glade.

PD: ¿Tiene Stack Overflow alguna preferencia de sitio para compartir código, como pastebin, etc.?

preguntado el 03 de mayo de 12 a las 14:05

Esto parece ser una especie de C, estoy usando Python y (creo), Gtk+. Añadiré esta información al primer mensaje. -

¿Puede proporcionar el código que está utilizando para crear la interfaz para que podamos separarla y ver qué es qué? -

Fuente: dl.dropbox.com/u/4900888/Deadliner.py UI: dl.dropbox.com/u/4900888/Mockup.glade La interfaz de usuario está hecha con Glade, por lo que probablemente necesitará Glade para darle algún sentido. -

Parece que ha seleccionado una respuesta, pero aún no ha resuelto su problema. Una forma en que funciona este sitio es que las preguntas sin respuesta (también conocidas como no resueltas) reciben más atención. Por lo general, querrá esperar hasta obtener la respuesta que resuelva su problema antes de hacer clic en ese esquema de verificación. -

1 Respuestas

La respuesta corta es: con el botón giratorio get_value_as_int() método.

Sin embargo, sospecho que su problema real es obtener una referencia al botón giratorio para llamar get_value_as_int() sobre. Desde tu codigo Veo que estas usando gtk.Builder para construir su interfaz de usuario.

Acceso a widgets

Mantener una referencia a widgets específicos en Handler ejemplo:

    handler = Handler()
    builder = Gtk.Builder()
    ...
    # Store references to widgets in `handler`
    for widget_name in ('sbtn_days', 'sbtn_hours', 'sbtn_minutes'):
        setattr(handler, widget_name, builder.get_object(widget_name))
    # The above is equivalent to the following:
    handler.sbtn_days = builder.get_object('sbtn_days')
    ...

    # In signal handling code:
    days = self.sbtn_days.get_value_as_int()

O puede mantener una referencia en builder en tu Handler ejemplo:

    builder = Gtk.Builder()
    handler = Handler()
    handler.builder = builder
    ...

    # In signal handler code:
    sbtn_days = self.builder.get_object('sbtn_days')
    days = sbtn_days.get_value_as_int()

Notas

En el código de arriba,

  • Supuse que su botón de giro por días se llama sbtn_days. Ajuste según sea necesario.
  • Solo demostré acceder sbtn_days y su valor. Se puede acceder a los otros botones de manera similar.

PD Hay muchos otros problemas con su código que impiden que sea "bueno".

contestado el 03 de mayo de 12 a las 14:05

Gracias, voy a ver si puedo hacer que esto funcione. ¿Estoy en lo correcto al suponer que no necesito editar el archivo de la interfaz de usuario, guardar para posibles cambios de nombre? - dorako

También estoy leyendo esto correctamente? La línea completa para obtener el valor sería algo como (days = self.Handler().Gtk.Builder().get_object('sbtn_days').get_value_as_int() - dorako

@Dorako: Sí, no es necesario realizar cambios en el archivo de la interfaz de usuario. La "línea completa" depende del enfoque anterior que haya elegido. Desde dentro de una función de controlador de señal, sería self.sbtn_days.get_value_as_int() o `self.builder.get_object('sbtn_days').get_value_as_int(). - Walter

class Handler: builder = Gtk.Builder() handler = Handler() handler.builder = builder #pressing the "Create Deadline" button activates this def onCreateDeadline(self, button): global fU global sU global has_deadline has_deadline = True #Fetch the value of sbtn_days sbtn_days = self.builder.get_object('sbtn_days') days = sbtn_days.get_value_as_int() ¿Agregué esto en el lugar equivocado? NameError: el nombre "Handler" no está definido EDITAR: Vaya, no hay líneas nuevas ni sangría en los comentarios, supongo. - dorako

Publique su código en algún lugar donde se pueda editar y pegue el enlace aquí, por favor. - Walter

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.