【问题标题】:wxpython threading textctrl disappears until files are processedwxpython threading textctrl 消失,直到文件被处理
【发布时间】:2013-08-11 19:04:25
【问题描述】:

下面提供了适当的代码。我曾经有过这个工作,但由于不得不更改其他一些代码而搞砸了。无法弄清楚我做了什么。 encrypt 函数创建一个线程并调用 EncryptProc 函数来处理一个或多个文件。每个文件完成后,它应该将名称打印到 textctrl。在代码当前状态下,它会等到所有线程/文件在打印前处理完毕。然后它一口气打印所有东西。在处理过程中,textctrl 也完全消失了。任何帮助都将不胜感激,因为它开始让我发疯,哈哈。

---编辑--- 代码已删除

【问题讨论】:

    标签: multithreading wxpython textctrl


    【解决方案1】:

    线程内不应有 GUI 访问 - 在您的情况下,EncryptProc 直接写入文本控件 - 您需要:

    1. 在线程中使用CallAfter在线程退出后更新文本控件或
    2. 在携带文件名信息的线程中引发custom event事件 并在主线程中有一个处理程序来更新文本控件 收到事件。

    【讨论】:

    • 嗨史蒂夫。我已经更新了上面的代码,现在使用 CallAfter。仍然会导致同样的问题。有什么想法吗?
    • 史蒂夫,我应该补充一下。刚刚尝试删除所有打印到 textctrl 的实例并再次运行该程序。在处理文件之前, textctrl 仍然完全消失。克林顿。
    • 嗨史蒂夫。现在都整理好了。我已经更新了上面的代码。是的,是 CallAfter 为我解决了这个问题。非常感谢!克林顿。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    相关资源
    最近更新 更多