Отображение чего-либо в kivy, когда процесс работает в фоновом режиме - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь сгенерировать график, когда я покидаю свое приложение kivy, используя matplotlib. Время создания этих графиков составляет около 20 секунд, и я хотел бы предупредить пользователя в течение этого времени. Я пытался использовать всплывающее окно Kivy, и это не сработало. Я пытался добавить ярлык, но, похоже, он тоже не работает. Вот почему мне действительно нужна помощь!

Мой код:

    def fermerBanc(self):  

        list_argument_graph=[]
        list_argument_graph.append(passerelle.graph1.y_low_min)
        list_argument_graph.append(passerelle.graph1.y_low_max)
        list_argument_graph.append(passerelle.graph1.y_high_min)
        list_argument_graph.append(passerelle.graph1.y_high_max)
        list_argument_graph.append(passerelle.graph1.setTaille)

        list_argument_graph_1=list(list_argument_graph)
        list_argument_graph_1.insert(0, chemin1)

        list_argument_graph_2=list(list_argument_graph)
        list_argument_graph_2.insert(0, chemin2)

        list_argument_graph_3=list(list_argument_graph)
        list_argument_graph_3.insert(0, chemin3)

        list_argument_graph_4=list(list_argument_graph)
        list_argument_graph_4.insert(0, chemin4)

        if(passerelle.graph1.flagGraph):

            p1 = Process(target=process_graph, args=(list_argument_graph_1,))
            p2 = Process(target=process_graph, args=(list_argument_graph_2,))
            p3 = Process(target=process_graph, args=(list_argument_graph_3,))
            p4 = Process(target=process_graph, args=(list_argument_graph_4,))

            try:
                p1.start()
            except AttributeError:
                Logger.warning('fermerBanc: impossible de generer un graph 1, fichier vide')

            try:
                p2.start()  
                pass
            except AttributeError:
                Logger.warning('fermerBanc: impossible de generer un graph 2, fichier vide')

            try:
                p3.start()
                pass
            except AttributeError:
                Logger.warning('fermerBanc: impossible de generer un graph 3, fichier vide')

            try:
                p4.start()
                pass              
            except AttributeError:
                Logger.warning('fermerBanc: impossible de generer un graph 4, fichier vide')

            self.msgWarning = Label(text="Merci de patienter...", font_size='55sp', size=(100, 50), pos_hint={'center_x': .5, 'center_y':.5})
            self.add_widget(self.msgWarning)

            p1.join()
            p2.join()
            p3.join()
            p4.join()

        exit()

Редактировать: если я прокомментирую несколько команд process и exit(), мой ярлык будет отображаться нормально

1 Ответ

0 голосов
/ 20 марта 2019

Только что нашел решение благодаря этой теме

Вы должны использовать метод kivy Clock.schedule_once(): Документация Kivy Clock

В моем случае я просто создаю функцию fermerbanc_schedule, отвечающую за:

  • Отображение ожидающего сообщения на экране
  • вызывается функцией fermerBanc через schedule_once

    def fermerBanc_schedule (self, * args): self.msgWarning = Label (text = "Merci de Patienter ...", font_size = '55sp', size = (100, 50), pos_hint = {'center_x': .5, 'center_y':. 5}) self.add_widget (self.msgWarning) Clock.schedule_once (лямбда-точка: self.fermerBanc (self, * args), 0)

...