2012-04-03 12 views
5

Chciałbym mieć wiodące zero w spinbuttonie, aby zawsze wyświetlały się dwie cyfry.Wyświetlanie wiodącego zera w gtk.SpinButton

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

Problem polega na tym, że pierwszy argument gtk.Adjustment musi być float/int.

Próbowałem rzeczy jak:

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

ale to nie działa.

Odpowiedz

5

Połączyć z sygnałem output przycisku obrotu. Na przykład, dostosowując kod C w dokumentacji I połączone z:

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

Wielkie dzięki, po prostu musiał zmienić spin_button.set_text ('{: 02d}'. Format (adjustment.get_value())) do spin_button .set_text ('{: 02d}'. format (int (adjustment.get_value()))) w funkcji, którą podałeś. Widziałem podobny kod w dokumentacji GTK (dla C), ale nie mogłem znaleźć metody .set_text() w pygtk (domyślam się, że gtk.SpinButton ma gtk.Entry jako przodek lub coś w tym stylu). – jkd

+0

Poprawiłem kod. Masz rację, przycisk wirowania dziedziczy po wejściu. – ptomato