#python #kivy #kivymd
#python #kivy #kivymd
Вопрос:
Я пытаюсь отобразить всплывающее окно в указанное пользователем время? Всплывающее окно отображается только в предварительно заданное время, поэтому я попробовал это. Теперь я получаю сообщение об ошибке: 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)}')
Ответ №1:
schedule.every().day.at(f'{int(self.hour)}:{int(self.minute)}').do(self.mantraPop_message)
должно быть помещено в def got_time():
, чтобы оно вызывало schedule каждый раз, когда установлено время. self.hour
теперь также может быть пустым. Раньше происходило то, что при запуске приложения начинается планирование, которое не может быть обновлено, поэтому теперь планирование начинается только тогда, когда время было установлено пользователем.