Программируемый таймер в Kivy и Python

avatar
MaxEl3ven
9 августа 2021 в 06:31
30
0
1

Я новичок в Python и еще более новичок в Kivy. Моя цель - сделать таймер, который я могу установить заранее (который позже будет управлять GPIO моей малины, но это другая тема). Я не совсем уверен, как я могу это сделать. Пока это мой код:

Код Python: (опущено большинство импортируемых данных для большей чистоты)

import Global

Builder.load_file("screens.kv")


class ScreenOne(Screen):
    pass

class ScreenTwo(Screen):
    pass

class ScreenThree(Screen):

    def pressPlus(self):
        Global.DTIME = Global.DTIME + 0.5
        self.ids.lbl1.text = str(Global.DTIME) + "h"

    def pressMinus(self):
        if Global.DTIME > 0:
            Global.DTIME = Global.DTIME - 0.5
        else:
            pass
        self.ids.lbl1.text = str(Global.DTIME) + "h"

    def showTime(self):
        self.ids.lbl1.text = str(Global.DTIME) + "h"



    def printTime(self):
        app = App.get_running_app()
        print(app.TIME)

class Manager(ScreenManager):

    screen_one = ObjectProperty(None)
    screen_two = ObjectProperty(None)
    screen_three = ObjectProperty(None)


class Trockner(App):


    def build(self):
        m = Manager(transition=WipeTransition())
        return m

    def furz(self, *args):
        print("Fuuuuurz")






Trockner().run()

.kv Файл:


<ScreenOne>:
     Button:
          text: "Manuell"
          on_press:
               root.manager.current = 'screen2'
               app.furz()
          size_hint: 0.15, 0.15
          pos_hint: {'center_x': 0.075, 'center_y': 0.9225}
     Button:
          text: "Zeiteingabe"
          on_press:
               root.manager.current = 'screen3'
          size_hint: 0.15, 0.15
          pos_hint: {'center_x': 0.25, 'center_y': 0.9225}

     Label:
          #text: "Eingestellte Zeit: "
          id: lbl1
          size_hint: 0.15, 0.15
          pos_hint: {'center_x': 0.5, 'center_y': 0.9225}

<ScreenTwo>:
     Button:
          text: "Automatik"
          on_press: root.manager.current = 'screen1'
          size: 100, 100
          size_hint: None, None
          pos_hint: {'center_x': 0.075, 'center_y': 0.9}

<ScreenThree>:
     FloatLayout:
          Label:
               id: lbl1
               size_hint:[.5,.5]
               pos_hint: {'right':1, 'top':1}
               font_size: 100
          Button:
               text: "+"
               size_hint:[.5,.5]
               on_press:
                    root.pressPlus()

          Button:
               text: "-"
               size_hint:[.5,.5]
               pos_hint: {'right': 1}
               on_press:
                    root.pressMinus()

          Button:
               text: "Enter"
               size_hint:[.5,.5]
               pos_hint: {'top':1, 'left':1}
               on_press:
                    root.manager.current = 'screen1'

<Manager>:
     id: screen_manager

     screen_one: screen_one
     screen_two: screen_two
     screen_three: screen_three

     ScreenOne:
          id: screen_one
          name: 'screen1'
          manager: screen_manager

     ScreenTwo:
          id: screen_two
          name: 'screen2'
          manager: screen_manager

     ScreenThree:
          id: screen_three
          name: 'screen3'
          manager: screen_manager

Сейчас файл Global.py, который я импортирую, содержит только переменную DTIME, поэтому я могу получить к ней доступ из Python и Kivy.

План состоит в том, что на третьем экране я могу установить время, которое затем снова используется на первом экране, чтобы запустить мой таймер обратного отсчета с установленного времени. Я также должен иметь доступ к установленному времени из моего кода Python, чтобы переключать GPIO после указанного времени. Ход таймера также должен быть виден на первом экране, что, вероятно, работает с часами и анимацией Kivy. Но я и в этом не совсем уверен, так что помощь будет очень признательна!

Источник

Ответы (0)