【问题标题】:How can I change scheduling time at run time如何在运行时更改调度时间
【发布时间】:2020-08-24 15:43:52
【问题描述】:

我试图在用户指定的时间显示一个弹出窗口?弹出窗口只显示在预编码的时间,所以我尝试了这个。现在我收到一条错误消息:int() argument must be a string, a bytes-like object or a number, not 'NoneType'

class MainApp(MDApp):
    hour = NumericProperty(None, allowenone=True)
    minute = NumericProperty(None, allowenone=True)

    def build(self):
        # calling the service
        if platform == "android":
            from android import AndroidService
            service = AndroidService("my pong service", "running")
            service.start("service started")
            self.service = service

        schedule.every().day.at(f'{int(self.hour)}:{int(self.minute)}').do(self.mantraPop_message)
        #schedule.every().day.at(str(0) + str(self.hour) + ":" + str(self.minute)).do(self.show_notification)
        Clock.schedule_interval(lambda dt: schedule.run_pending(), 1)
        return MainScreen()

    def show_timepicker(self):
        picker = MDTimePicker()
        picker.bind(time=self.got_time)
        picker.open()

    def got_time(self, picker_widget, time):
        self.hour = time.hour
        self.minute = time.minute
        print(f'{int(self.hour)}:{int(self.minute)}')

【问题讨论】:

    标签: python kivy kivymd


    【解决方案1】:

    schedule.every().day.at(f'{int(self.hour)}:{int(self.minute)}').do(self.mantraPop_message) 应放在def got_time(): 中,以便每次设置时间时都会调用 schedule。 self.hour 现在也可以为空。之前发生的情况是,当应用程序运行时,调度开始并且无法更新,所以现在,调度仅在用户设置的时间时开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-23
      • 2011-01-21
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      • 2021-02-05
      • 1970-01-01
      相关资源
      最近更新 更多