gpt4 book ai didi

multithreading - 如何在 Python 中接收线程回调

转载 作者:行者123 更新时间:2023-12-02 03:30:43 25 4
gpt4 key购买 nike

这可能以前有人问过,但我找不到我要找的东西。我有从主 UI 线程 (TKinter) 启动的后台线程,我希望它向 UI 发送状态更新。我很欣赏一些代码或伪代码或链接,它们显示了如何在 python 中完成此操作。

伪代码: //测试.py

def __init__(self, parent):
#Button
self.submit_button = Button(self,
text="launch_tasks",
command=self.launch_tasks).pack()
#label
self.label = Label(master, text="Hello, world!")
self.label.pack()

def launch_tasks(self)
t = Thread(target=self.process_tasks)
t.start()

def process_tasks(self):
cnt = getJobs(self);
self.label = cnt # I like to update label here
for(job in jobs):
process(job)
self.label = 'processing' + job # I like to update label
...

最佳答案

使用添加了事件路由的消息传递层补充 Tkinter

虽然 Tkinter/.mainloop() 是一个自包含的模型-视觉- Controller 系统,但您可以在线程安全、非阻塞模式,添加您自己的补充(进程间/任意到任意)消息层,并为其本地主机/ self 参与者配备基于 Tkinter 的事件路由机制,以与 .mainloop()< 集成

################################################ SETUP EVENT-ROUTING Injector

self.aSigFromZMQ = "<<aVirtualEventSignalledFromZMQ_LAYER>>"

self.bind( self.aSigFromZMQ, anEventHANDLER )
# |
# .bind <<virtual_EventNAME>> altogether with <anEventHANDLER>-call


################################################ Context-fully TRIGGER Injector

self.event_generate( self.aSigFromZMQ, aSigContextDICT )
# |
# .event_generate( <eventNameId>, **args ) # triggers <eventNameId>
# # + passes **args, that allows
# # to set <keyword>=<value> pairs for Event-fields,
# # that are passed to anEventHANDLER via <Event>-object ...

用于插图和点击链接到来自最先进的、令人难以置信的快速、智能和可扩展的多对多消息传递的进程间消息传递系统之父之一的真书 (包括基于此的线程间信号) 请引用。 >>> https://stackoverflow.com/a/26559710/3666197


enter image description here

线程到线程信号(回调无限制)

关于multithreading - 如何在 Python 中接收线程回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26974694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com