Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Kivy-多处理。从kivy';外部通过其他进程/Alter kivy Listproperty调用kivy小部件函数;丝线_Python_Multiprocessing_Kivy_Clock_Listproperty - Fatal编程技术网

Python Kivy-多处理。从kivy';外部通过其他进程/Alter kivy Listproperty调用kivy小部件函数;丝线

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)

根据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)
    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网络内容解释相关的链接。我想我宁愿试着用线程来管理。。