Python Kivy-多处理。从kivy';外部通过其他进程/Alter kivy Listproperty调用kivy小部件函数;丝线
根据Matt的回答,我尝试使用Python Kivy-多处理。从kivy';外部通过其他进程/Alter kivy Listproperty调用kivy小部件函数;丝线,python,multiprocessing,kivy,clock,listproperty,Python,Multiprocessing,Kivy,Clock,Listproperty,根据Matt的回答,我尝试使用 clock.schedule在另一个进程中更改名为“data\u items”的ListProperty,但仍然出现错误“未定义全局名称'set\u property' beedo.py: class MyW(Widget): data_items = ListProperty([]) def set_property(camera, *largs): self.data_items.append(camera) print(data_items)
clock.schedule
在另一个进程中更改名为“data\u items”的ListProperty
,但仍然出现错误“未定义全局名称'set\u property'
beedo.py:
class MyW(Widget):
data_items = ListProperty([])
def set_property(camera, *largs):
self.data_items.append(camera)
print(data_items)
return
....
class beedoApp(App):
def build(self):
return MyW()
....
def do_list(camera):
Clock.schedule_once(partial(set_property, camera))
print "do list startet.."
def socket_server()
....
def event_handler
....
list1 = Process (target=do_list, args=(camera))
list1.start()
if __name__ == "__main__":
server1 = Process (target=socket_server, args=(....)
server2 = Process (target=socket_server, args=(....)
handler = Process (target=event_handler, args=(....)
server1.start()
server2.start()
handler.start()
beedoApp().run()
server1.join()
server2.join()
handler.join()
在文件beedo.kv中,我定义了一个simplelistatadapter
:
ListView:
adapter:
sla.SimpleListAdapter(data=root.data_items, cls=ListItemButton)
报警设备的屏幕如下所示:
我在这里上传了完整的代码:
beedo.py
求求你,如果你能帮助我,我将非常感激!!在这方面,答案是关于使用线程(在这种情况下,有一个共享的全局上下文,包括set_属性函数),而您使用的是进程(在这种情况下没有)。我想如果你想这样做的话,你需要进行一些进程间通信,例如,对于简单的Kivy应用程序,我们经常使用osc(可作为Kivy.libs.osc提供)。嗨,恶劣!谢谢你的提示!你能给我一些关于如何实现与kivy.libs.osc的沟通的更多提示吗?非常感谢。PS:我试图使用一个名称空间和multiprocess.manager,但无法使其正常工作。我想我找到了一个与osc网络内容解释相关的链接。我更愿意尝试使用线程进行管理。答案是关于使用线程(在这种情况下,有一个共享的全局上下文,包括set_属性函数),而您使用的是进程(在这种情况下没有)。我想如果你想这样做的话,你需要进行一些进程间通信,例如,对于简单的Kivy应用程序,我们经常使用osc(可作为Kivy.libs.osc提供)。嗨,恶劣!谢谢你的提示!你能给我一些关于如何实现与kivy.libs.osc的沟通的更多提示吗?非常感谢。PS:我试图使用一个名称空间和multiprocess.manager,但无法使其正常工作。我想我找到了一个与osc网络内容解释相关的链接。我想我宁愿试着用线程来管理。。