2012-04-03 11 views
5

me gustaría tener un cero a la izquierda en un botón giratorio para tener siempre dos dígitos.mostrar cero a la izquierda en un gtk.SpinButton

adj_hour = gtk.Adjustment(int(time.strftime("%H")),0,24,1,1) 
entry_hour = gtk.SpinButton() 
entry_hour.set_adjustment(adj_hour) 

El problema es que el primer argumento de gtk.Adjustment debe ser float/int.

Traté cosas como:

adj_hour = gtk.Adjustment(float(format(int(time.strftime("%H")), '02d')),0,24,1,1) 

pero no funciona.

Respuesta

5

Conéctese a la señal output del botón de giro. Por ejemplo, adaptando el código C en la documentación que vinculado a:

def show_leading_zeros(spin_button): 
    adjustment = spin_button.get_adjustment() 
    spin_button.set_text('{:02d}'.format(int(adjustment.get_value()))) 
    return True 

... 

entry_hour.connect('output', show_leading_zeros) 
+0

Muchas gracias, sólo tenía que cambiar spin_button.set_text ('{: 02d}'. Formato (adjustment.get_value())) a spin_button .set_text ('{: 02d}'. format (int (adjustment.get_value()))) en la función que proporcionó. Vi un código similar en la documentación de gtk (para C) pero no pude encontrar el método .set_text() en pygtk (supongo que gtk.SpinButton tiene gtk.Entry como antecesor o algo así). – jkd

+0

Corregí el código. Tienes razón, el botón de giro hereda de la entrada. – ptomato

Cuestiones relacionadas