【问题标题】:wxpython infinite refresh panel cause program collapsewxpython无限刷新面板导致程序崩溃
【发布时间】:2012-03-30 16:18:34
【问题描述】:

我在尝试使用Wxpython + OpenCV实现人脸检测时遇到了一个问题。

基本上,我的想法是设计一个包含检测到的框架和两个按钮的 GUI。一个用于启动,另一个用于停止。我使用面板作为容器来显示每一帧,并在极短的时间间隔内无限刷新面板。

但是当我运行程序时,如果我单击开始按钮,程序将在 2 秒后崩溃。甚至在程序崩溃之前,停止按钮似乎也没有用。

我认为是线程问题。由于整个 UI 是一个大循环,如果我需要一直刷新其中一个组件,比如面板,我需要使用除主线程之外的不同线程。

对吗?如果是,我该怎么做?如果没有,请给我一些额外的提示。

谢谢一百万~! ;)

【问题讨论】:

    标签: python multithreading wxpython refresh panel


    【解决方案1】:

    除非必须,否则不应刷新。不必要地刷新不是要走的路。仅在发生变化时刷新。如果您使用线程来更新 wxPython GUI 组件,那么您需要确保使用 wxPython 线程安全方法,例如 wx.CallAfter、wx.CallLater 或 wx.PostEvent。有关线程和 wxPython 的更多信息,请参阅以下任何内容:

    【讨论】:

    • 非常感谢。你的回复对我很有用,尤其是第一个:wiki.wxpython.org/LongRunningTasks
    • wxPython 也有用于运行多线程任务的便利模块:wx.lib.delayedresult。我不知道为什么它一直被省略。
    • 因为我总是忘记它;)
    猜你喜欢
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 2012-03-06
    • 1970-01-01
    相关资源
    最近更新 更多