python - wxPython:使用 EVT_IDLE

标签 python wxpython

我为 EVT_IDLE 定义了一个处理程序,它为我执行特定的后台任务。 (该任务是从几个进程中获取完成的工作并将其集成到某个对象中,从而在 GUI 中进行可见的更改。)

问题是当用户没有移动鼠标或做任何事情时,EVT_IDLE 不会被调用超过一次。我希望这个处理程序一直在工作。所以我尝试在处理程序的末尾调用 event.RequestMore()。可以,但现在需要大量 CPU。 (我猜它只是在该任务上过度循环。)

我愿意限制任务每秒执行的次数;我该怎么做?

或者您有其他解决方案吗?

最佳答案

像这样的事情(最多每秒执行一次):

...

def On_Idle(self, event):
    if not self.queued_batch:
        wx.CallLater(1000, self.Do_Batch)
        self.queued_batch = True

def Do_Batch(self):
    # <- insert your stuff here
    self.queued_batch = False

...

哦,不要忘记在构造函数中将 self.queued_batch 设置为 False,并可能在 On_Idle 中以某种方式调用 event.RequestMore()。

关于python - wxPython:使用 EVT_IDLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/783023/

相关文章:

python - WxPython - 清除事件队列和未决任务

python - 使用 richTextCtrl 和 wxPython 的内存泄漏

python - 如何在 GAE 上最好地设计日期/地理邻近查询?

python - 使用全局标志进行 python RegExp 编译

python - 跟踪 python 中最后 5 个数据点的任何方法

python - wxPython - StyledTextCtrl 获取当前可见行

python - 在我的 Django 模板中,如何显示复选框和通知类型?

python - 在Python中快速对二维数组进行装箱的方法

python - Ubuntu 12.04 上的 wxPython 2.8.12.1 - 为什么不显示菜单图标?

python - wxpython,将变量从一个框架导入到两个不同文件中的另一个框架