2012-04-03 7 views
5

içinde baştaki sıfırı gösterir, her zaman iki basamağa sahip olmak için bir döndürme düğmesinde baştaki bir sıfıra sahip olmak isterim., bir gtk.SpinButton

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

Bu sorun, gtk.Adjustment'ın ilk argümanı float/int olmalıdır.

i gibi şeyler denedim:

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

ama çalışmıyor.

cevap

5

Sıkma düğmesinin output sinyaline bağlanır. Sadece spin_button.set_text değiştirmek zorunda

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

çok teşekkürler: Örneğin, belgelerde C kodu adapte ben bağlantılı ('{: 02d}'. biçimi (adjustment.get_value())) spin_button için .set_text ('{: 02d}'. formatını (int (adjust.get_value()))) verdiğiniz işlevin. Ben gtk belgelerinde (C için) benzer bir kod gördüm ama pygtk içinde .set_text() yöntemini bulamadım (ben gtk.SpinButton'ın gtk.Entry ya da benzeri bir şey olduğunu tahmin ediyorum). – jkd

+0

Kodu düzelttim. Haklısınız, çevir düğmesi girişten miras alınır. – ptomato