Я пытаюсь создать простое приложение с метрономом, но у меня возникли некоторые трудности.У меня есть переменная bpm, которой я управляю с помощью кнопок +
и -
.Я могу изменить bpm, но Clock.schedule_interval
все еще остается в своем первом значении.
python
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.lang import Builder
from kivy.core.window import Window
from kivy.properties import ObjectProperty
from kivy.properties import StringProperty
from kivy.clock import Clock
Window.size = 320, 568
kv = Builder.load_file("test.kv")
def job(dt):
print("hello world")
print(mainWindow.bpm)
class mainWindow(FloatLayout):
tempo = 60
bpm = 60/tempo
labelTempo = StringProperty(str(tempo))
event = Clock.schedule_interval(job, bpm )
def button(self, btn):
if btn == "+":
mainWindow.tempo += 1
self.labelTempo = str(self.tempo)
mainWindow.bpm = 60/self.tempo
if btn == "-":
mainWindow.tempo -= 1
self.labelTempo = str(self.tempo)
mainWindow.bpm = 60/self.tempo
class crApp(App):
def build(self):
return mainWindow()
if __name__ == '__main__':
crApp().run()
Kv file
<mainWindow>:
FloatLayout:
Button:
id: minus
text: "-"
size_hint: 0.3, 0.25
pos_hint: {"x": 0.0, "top": 0.4}
on_press: root.button("-")
ToggleButton:
id: start
text: "start"
size_hint: 0.4, 0.25
pos_hint: {"x": 0.3, "top": 0.4}
Button:
id: plus
text: "+"
size_hint: 0.3, 0.25
pos_hint: {"x": 0.7, "top": 0.4}
on_press: root.button("+")
Label:
id: tempo
text: root.labelTempo
Также было много проблем при попытке обновить текст метки с помощью переменной, но теперь она работает нормально, за исключением случаев, когда я набрал print(mainWindow.labelTempo)
, но я получаю <StringProperty name=labelTempo>
, но не совсем уверен, почему.