我要显示的值是由kivy多线程创建的。 该值是由其他类中的多线程过程创建的。我要在root_class中显示值。
详细信息: 多线程过程在步骤Aaa()中。类Aaa()中的多线程调用的方法在类Ddd()中。用奇异语言无法在运行过程中显示值?
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()
猕猴桃代码
<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
谢谢您的指导!
答案 0 :(得分:0)
您的猕猴桃代码将Ddd
的实例创建为Aaa
的子代。然后,您的multithread
方法正在创建Ddd
的另一个实例,并运行该新实例的eee
,因此显示中的Ddd
对此一无所知。您需要运行已经创建的eee
实例的Ddd
方法。使用ID进行检索。
因此,将ddd = Ddd()
方法中的multithreaad
替换为ddd = self.ids.ddd
。另外,您还需要按照下面的顺序在id中移动ID:
<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