kivy, как отобразить значение (StringProperty) в многопоточности по python - PullRequest
0 голосов
/ 23 сентября 2018

Я хочу отобразить значение, созданное многопоточностью по kivy.Значение создается процессом многопоточности в другом классе.В root_class я хочу отобразить значение.

Подробно: процесс многопоточности находится в состоянии Aaa ().Метод, вызываемый многопоточностью в классе Aaa (), находится в классе Ddd ().По kivy язык не может отобразить значение в процессе работы?

код Python

class Aaa(BoxLayout):

    def multithread(self):

        ddd = Ddd()
        thread1 = threading.Thread(target=ddd.eee,args=())
        thread1.start()

class Ddd(BoxLayout):
    ff=StringProperty()

    def eee(self):
        self.e = 0
        for _ in range(10):
            self.e += 1
            self.f = self.e * 2
            self.ff = str(self.f)
            time.sleep(3)
class WwwApp(App):

    def build(self):
        return Aaa()

if __name__ == '__main__':
    WwwApp().run()

код kivy

<Aaa>:
    id: aaa
    size: 500,500
    orientation: 'vertical'
    Button:
        id: button_b
        text: 'exec_root.multithread()'
        size_hint_y: 0.5
        on_press: root.multithread()
    Ddd:
        size_hint_y: 0.5
<Ddd>:
    id: ddd
    size: 500,200
    Label:
        id: label_d
        text: root.ff    

Спасибо за вашу инструкцию!

1 Ответ

0 голосов
/ 23 сентября 2018

Ваш код kivy создает экземпляр Ddd как дочерний элемент Aaa.Затем ваш метод multithread создает другой экземпляр Ddd и запускает eee этого нового экземпляра, поэтому Ddd на вашем дисплее ничего не знает об этом.Вам необходимо запустить метод eee уже созданного экземпляра Ddd.Используйте идентификатор, чтобы получить его.

Итак, замените ddd = Ddd() в вашем методе multithreaad на ddd = self.ids.ddd.Также вам нужно переместить идентификатор в вашем коде kivy как показано:

<Aaa>:
    id: aaa
    size: 500,500
    orientation: 'vertical'
    Button:
        id: button_b
        text: 'exec_root.multithread()'
        size_hint_y: 0.5
        on_press: root.multithread()
    Ddd:
        id: ddd
        size_hint_y: 0.5
<Ddd>:
    size: 500,200
    Label:
        id: label_d
        text: root.ff
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...