调用app.MainLoop()后更新wxPython进度条

2024-04-14

我有一个执行计算的 python 脚本,并且我已经为弹出 wxPython 进度条创建了一个类。目前我有:

app=wx.App()
progress = ProgressBar()
app.MainLoop()

for i in xrange(len(toBeAnalysed)):
    analyse(toBeAnalysed[i])
    progress.update(i/len(toBeAnalysed)*100)

现在,由于显而易见的原因,这个示例不起作用。有什么方法可以在不同的线程中运行 app.MainLoop() 但在计算完成时仍然传达进度(和 .update() )?

谢谢您的帮助。


您应该在后台线程中运行逻辑并使用wx.CallAfter定期更新 GUI。CallAfter将在 GUI 线程上调用提供的函数,因此进行 GUI 调用是安全的。

import wx
import threading
import time

def do_stuff(dialog): # put your logic here
    for i in range(101):
        wx.CallAfter(dialog.Update, i)
        time.sleep(0.1)
    wx.CallAfter(dialog.Destroy)

def start(func, *args): # helper method to run a function in another thread
    thread = threading.Thread(target=func, args=args)
    thread.setDaemon(True)
    thread.start()

def main():
    app = wx.PySimpleApp()
    dialog = wx.ProgressDialog('Doing Stuff', 'Please wait...')
    start(do_stuff, dialog)
    dialog.ShowModal()
    app.MainLoop()

if __name__ == '__main__':
    main()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

调用app.MainLoop()后更新wxPython进度条 的相关文章

随机推荐

  • Rails 扩展 ActiveRecord::Base

    我已经阅读了一些有关如何扩展 ActiveRecord Base 类的内容 因此我的模型将具有一些特殊的方法 扩展它的简单方法是什么 分步教程 有几种方法 使用 ActiveSupport Concern 首选 阅读ActiveSuppor
  • Pyomo 中 TransformedPiecewiseLinearFunctionND 的正确用法是什么?

    背景 我正在尝试在 Pyomo 中使用代理模型 给定一组标记为 x y 和 z 的数据 我想将 z 写为 x 和 y 的廉价函数 Issue Pyomo 具有用于多元分段线性函数的工具 看here https pyomo readthedo
  • gcc 链接器获取未使用对象的列表

    我想识别具有许多库的大型 C 应用程序中未使用的目标文件 随着时间的推移 该项目已经增长了很多 现在我想搜索不再使用的库 以便我可以从依赖项文件中删除它们 gcc 链接器是否可以识别任何未使用的对象 例如 如果我使用 gcc 编译一个应用程
  • 拆分矩阵的列,对每个列的点图进行排序,然后在图中布局

    我有一个数据矩阵 带有行名称和列名称 我想为每列数据绘制一个点图 每个图表中的数据从最大到最小排序 然后将这些图在图中一个一个地排列 例如 如果我有以下矩阵 gt X W X Y Z A 11 7 8 7 15 4 100 0 B 18 1
  • 如何在 asmx 文件中添加 WebMethod

    我已经开始在 ASPX Web 项目中工作 该项目已经有一个现有的asmx文件 它包含大约 4 个 WebMethods 这 4 个 Webmethods 显示了http localhost 2133 WebServices asmx 现在
  • 使用 ruby​​ on Rails 向静态网站添加功能

    我是 ruby on Rails 的新手 我有一个包含很多静态页面的网站 我想向网站添加一些动态页面 我将在 ruby on Rails 中开发这些页面 当用户单击静态页面之一上的按钮之一时 将触发这些页面提供的功能 我想我将把动态页面放在
  • 将原始图像数据放在 Src Attr 中是否更有效?

    我最近发现src图像的属性允许您将原始的 Base 64 图像数据直接放入其中 我是否正确地认为这在技术上比单独的图像文件更有效 因为不必对图像提出额外的请求 或者开销太小以至于不值得 另外 假设我最终这样做了 获取原始数据的最佳方法是什么
  • vb.net 的 file.shortpath

    我正在将我的项目从 vb6 转换为 vb net vb net中有shortpath的模拟方法吗 Dim DestinationFile As Scripting File DestinationFile ShortPath Thanks
  • 具有 OneToOne 关系的 Django 模型?

    假设我使用默认值auth models User加上我的习惯Profile and Address模型看起来像这样 class Profile models Model user models OneToOneField User prim
  • 实体框架数据库首次 POCO t4 生成和验证

    注意 我使用的是 ASP Net 应用程序而不是 MVC 因此不支持验证属性 我使用数据库优先方法 然后使用 POCO t4 模板生成 POCO 类 我将生成的 POCO 类移动到它自己的库 Domain Model 中 现在我想使用 En
  • Rails:ActionMailer 的运行时配置?

    我想通过 Gmail 从我的应用程序发送少量电子邮件 现在 SMTP 设置将在运行时确定 即 从数据库 可以这样做吗 编辑 我可以在该类的方法之一中设置 ActionMailer 子类 名为 Notifier smtp 设置 这样我就可以设
  • 对于在 Python3 中的 Tornado 上使用非阻塞 MySQL api 有什么建议吗?

    我希望tornado支持异步sql数据库操作 在我阅读源代码之后 http www tornadoweb org documentation modules tornado database html Connection http www
  • WHOIS 服务器守护进程

    是否有任何 WHOIS 服务器守护程序可以在我的服务器上运行并服务我的请求 是否可以像 DNS 服务器一样在 WHOIS 层次结构的末尾部署自己的 WHOIS 服务器 看一眼rwhois https www rfc editor org r
  • Request.Unvalidated 在 asp.net-core 上在哪里?

    我注意到在classic ASP NET MVC有一个Unvalidated属性于Request它允许访问当前请求提供的原始值 我无法在 ASP NET MVC 上识别此属性Core 还有办法访问该信息吗 ASP NET Core 不具有与
  • 为什么Java需要Serialized接口?

    我们大量地进行序列化工作 并且必须在我们使用的每个对象上指定可序列化标签是一种负担 尤其是当它是我们无法真正更改的第 3 方类时 问题是 由于 Serialized 是一个空接口 一旦添加 Java 就会提供健壮的序列化implements
  • Django:重建通过 $.post 发送的结构化参数

    我正在发送带有结构化发布数据的 Ajax 请求 使用 jQuery post myUrl items code a description aaa code b description bbb 我所看到的request POST is
  • 签名 APK 中的空响应 - 调试 APK 中的正确响应

    我正在使用 Retrofit 进行网络调用 我在签名 APK 时面临奇怪的问题 改造请求 FormUrlEncoded Headers Accept application json POST Call
  • 如何在 VB.NET 中每 x 分钟调用一个函数?

    如何每 x 分钟调用一个函数 我想我必须在表单中添加一个计时器 这是一个简单的例子 Public Class SampleCallEveryXMinute Private WithEvents xTimer as new System Wi
  • 总是在 Perl 脚本结束之前执行一些代码

    如何设置在 Perl 脚本停止之前必须执行的代码 In here 如何在perl脚本退出之前运行一段代码 https stackoverflow com questions 3078508 how to run piece of code
  • 调用app.MainLoop()后更新wxPython进度条

    我有一个执行计算的 python 脚本 并且我已经为弹出 wxPython 进度条创建了一个类 目前我有 app wx App progress ProgressBar app MainLoop for i in xrange len to