#python #python-2.7 #xbmc
#python #python-2.7 #xbmc
Вопрос:
Я работаю над своим скриптом python для медиа-приложения xbmc, чтобы я мог обновить текстовую метку строкой процентов. Для начала я установил для текста метки значение «0%», но я понятия не имею, как обновить текст метки с помощью «1%», «10%», «20%» и так далее.
Когда я пытаюсь это:
progressStartTime = datetime.datetime.now()
delta = datetime.datetime.now() - progressStartTime
secondsLeft = int(delta.seconds) / float(percentageComplete) * (100.0 -
percentageComplete)
if secondsLeft > 30:
secondsLeft -= secondsLeft % 10
self.setControlLabel(self.main_loading_time_left, "" % secondsLeft)
У меня возникли проблемы с обновлением текста в метке, где я получаю
сообщение об ошибке. Ошибка, которую я получаю: ошибка ZeroDivisionError: деление с плавающей запятой
Ошибка переходит на эту строку:
secondsLeft = int(delta.seconds) / float(percentageComplete) * (100.0
- percentageComplete)
Не могли бы вы помочь мне, как я могу обновить текст в метке с помощью строки процентов?
Редактировать: вот код обновления:
percentageComplete = 0
if percentageComplete < 1:
self.getControl(4202).setLabel("1%")
progressStartTime = datetime.datetime.now()
delta = datetime.datetime.now() - progressStartTime
secondsLeft = int(delta.seconds) * (100.0 - percentageComplete)
if percentageComplete > 1:
secondsLeft -= secondsLeft % 10
self.getControl(4202).setLabel(secondsLeft "%")
#self.setControlLabel(self.main_loading_time_left, "%" % secondsLeft)
Комментарии:
1. Я предполагаю, что percentageComplete начинается с 0.
2. при использовании уже установлено значение 0
percentageComplete = 0
. Есть идеи?3. Вы делите на 0, потому что percentageComplete равно 0…
4. О, я понимаю, не могли бы вы сказать мне, какие изменения мне нужно будет внести, даже если мне не нужно делить?
Ответ №1:
Вы не можете определить, сколько времени осталось, когда вы находитесь на 0%. Исключите этот случай с помощью регистра if.
Комментарии:
1. можете ли вы сказать мне, как я могу обновить текст в метке, когда у меня есть строка в тексте метки с
1%
?2. Когда вы не на 0%, это правильно. Что вы подразумеваете под «как я могу обновить»? Можете ли вы показать нам контекст вызова?
3. Когда у меня есть текст «1%» в метке, код должен обновлять новый текст с
1%
чего-то вроде10%
,20%
или что бы это ни было. В моем коде текст в метке все еще отображается1%
. Пожалуйста, посмотрите Код обновления в моем первом сообщении.4. Когда я попробую код, который я использую
self.getControl(4202).setLabel(secondsLeft "%")
, я получу сообщение об ошибке:TypeError: unsupported operand type(s) for : 'float' and 'str'
, есть идеи, как это исправить?5. str(secondsLeft) должен сделать трюк для этого. Вы зацикливаетесь на этой функции? Потому что прямо сейчас ваши данные будут обновлены только один раз. Кроме того, я не уверен, что это будет правильно обновляться. Знаете ли вы, какое время окончания, предполагая, что у вас есть время начала (т. Е. Знаете ли вы, как долго длится ваш носитель?)