Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 6, 2015 22:40:47

andrey_spb
Зарегистрирован: 2015-06-06
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Косяк в tkinter spinbox

Для установки времени , часы-минуты применил spinbox.

firstHour = Spinbox(F_cuttimeframe, from_=0, to=23, format='%02.0f',   width = 2, readonlybackground = 'white', state ='readonly').grid(row=2, column=2)
То есть хотел сделать вывод с лидирующими нулями. 00, 01 и т.д.
В linux и win xp все так и работает. А в win 7, 64 разрядной выводит 01, 01,….02, 02 место 10, 11… 20, 21.
То есть ноль лепит слева независимо от количества разрядов в числе.
Как с этим бороться?

Офлайн

#2 Июнь 7, 2015 11:17:08

andrey_spb
Зарегистрирован: 2015-06-06
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Косяк в tkinter spinbox

Похоже это баг в версии tkinter.
Вот тут об этом пишут. https://bugs.python.org/issue21303
У заказчика оказалась как назло версия питона с багом в ткинтере. Python 3.2
Приделал костыли.

m_hours = list(map(lambda x:'%02d'%x,list(range(0, 24))))
Hour = Spinbox(F_cuttimeframe, values=m_hours,   width = 2, readonlybackground = 'white', state ='readonly').grid(row=3, column=2)
Так работает как надо.

Офлайн

#3 Июнь 7, 2015 11:25:23

andrey_spb
Зарегистрирован: 2015-06-06
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Косяк в tkinter spinbox

Да, со списком значений перемудрил.
Так будет лучше:

m_hours = list(map(lambda x:'%02d'%x,range(0, 24)))

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version