Я пытаюсь понять, как поставить часы на приложение kivy, но у меня возникли трудности.
Я могу заставить его работать с помощью кнопки.. (т. если я нажму на кнопку, он обновит время часов на этикетке), но я не могу заставить его работать автоматически обновляя каждую секунду.
Любая помощь очень ценится!
Строка события закомментирована, я могу сделать работу с простым файлом с командой печати, но не в контексте изменения текста метки. Он просто говорит » отсутствует 1 аргумент»
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
import time
from kivy.clock import Clock
class test(BoxLayout):
def showClock(self,dt):
timey = (time.strftime("%H"+":"+"%M"+":"+"%S")),dt
self.ids.labelID.text = (timey[0])
event = Clock.schedule_interval(showClock, 1)
class question(App):
def build(self):
return test()
if __name__ =="__main__":
question().run()
KV файл:
<test>:
id:test
BoxLayout:
Label:
id: labelID
text:"label"
Button:
id: buttonID
text:"button"
on_release:test.showClock(1)
РЕДАКТИРОВАТЬ:
Ошибка считывает:
File "C:Python34libsite-packageskivyclock.py", line 406, in tick
ret = callback(self._dt)
TypeError: showClock() missing 1 required positional argument: 'dt'
EDIT2:
После многих экспериментов и просмотра кода других людей в интернете, мне удалось заставить его работать.. хотя я не уверен, почему и как.. любое объяснение было бы очень полезно, чтобы помочь моему пониманию…
Работающий код:
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
import time
from kivy.clock import Clock
class test(BoxLayout):
def __init__(self, **kwargs):
super(test, self).__init__(**kwargs)
Clock.schedule_interval(self.showClock, 1)
def showClock(self, dt):
timey = (time.strftime("%H"+":"+"%M"+":"+"%S")),dt
self.ids.labelID.text = (timey[0])
class question(App):
def build(self):
return test()
if __name__ =="__main__":
question().run()
Функция showClock ожидает аргумент dt. Вы можете использовать «partial» для передачи этого аргумента. Это объясняется в документах: https://kivy.org/docs/api-kivy.clock.html
Надеюсь, это поможет.