wxpython 3.0 & multiprocessing - 从后台进程更新 GUI
wxpython 3.0 & multiprocessing - update GUI from background process
在我的 wxpython GUI 应用程序中,我有一个 rsync 任务,我以 multiprocessing.Process.
开始
想法是使用此后台进程的恒定输出更新 wx.textCtrl。
我正在使用 pubsub 订阅方法。
功能正常,但我无法让 textCtrl 更新。
如果我使用 CallAfter 方法,我会得到这个 crash/error:
The process has forked and you cannot use this CoreFoundation
functionality safely. You MUST exec(). Break on
THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC()
to debug.
如果我不使用该方法并尝试将文本直接附加到 textctrl,则什么也不会发生。
有什么想法吗?
谢谢!
亚当
问题是子进程无法写回主进程。使用 queue 将消息传递回主进程,并从等待队列消息的计时器或后台线程中更新控件。
在我的 wxpython GUI 应用程序中,我有一个 rsync 任务,我以 multiprocessing.Process.
开始想法是使用此后台进程的恒定输出更新 wx.textCtrl。
我正在使用 pubsub 订阅方法。
功能正常,但我无法让 textCtrl 更新。
如果我使用 CallAfter 方法,我会得到这个 crash/error:
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec(). Break on THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC() to debug.
如果我不使用该方法并尝试将文本直接附加到 textctrl,则什么也不会发生。
有什么想法吗?
谢谢!
亚当
问题是子进程无法写回主进程。使用 queue 将消息传递回主进程,并从等待队列消息的计时器或后台线程中更新控件。