wxPython in Action(七十七)

9.1.5 如何显示进度条?

在许多程序中,程序需要自己做些事情而不受用户输入的干扰。这时就需要给用户一些可见的显示,以表明程序正在做一些事情及完成的进度。在wxPython中,这通常使用一个进度条来管理,如图9.5所示。

图9.5


例9.5显示了产生图9.5的代码

例9.5 生成一个进度条

import wx

if __name__ == "__main__":
    app = wx.PySimpleApp()
    progressMax = 100
    dialog = wx.ProgressDialog("A progress box", "Time remaining", progressMax,
            style=wx.PD_CAN_ABORT | wx.PD_ELAPSED_TIME | wx.PD_REMAINING_TIME)
    keepGoing = True
    count = 0
    while keepGoing and count < progressMax:
        count = count + 1
        wx.Sleep(1)
        keepGoing = dialog.Update(count)

    dialog.Destroy()
    
进度条的所有选项在构造函数中被设置,构造函数如下:

wx.ProgressDialog(title, message, maximum=100, parent=None, 
        style=wx.PD_AUTO_HIDE | wx.PD_APP_MODAL)

这些参数不同于其它对话框的。参数title被放置在窗口的标题栏,message被显示在对话框中。maximum是你用来显示进度计数的最大值。

表9.3 列出了特定于wx.ProgressDialog六个样式,它们影响进度条的行为。

表9.3 wx.ProgressDialog的样式

wx.PD_APP_MODAL:如果设置了这个样式,进度条对整个应用程序是模式的,这将阻塞所有的用户事件。如果没有设置这个样式,那么进度条仅对它的父窗口是模式的。

wx.PD_AUTO_HIDE:进度条将自动隐藏自身直到它达到它的最大值。

wx.PD_CAN_ABORT:在进度条上放上一个Cancel按钮,以便用户停止。如何响应来自该对话框的取消将在以后说明。

wx.PD_ELAPSED_TIME:显示该对话框已经出现了多长时间。

wx.PD_ESTIMATED_TIME:显示根据已花的时间、当前的计数值和计数器的最大值所估计出的完成进度所需的总时间。

wx.PD_REMAINING_TIME:显示要完成进度所估计的剩余时间,或(所需总时间-已花时间)。

要 使用进度条,就要调用它的唯一的方法Update(value,newmsg="")。value参数是进度条的新的内部的值,调用update将导致进 度条根据新的计数值与最大计算值的比例重绘。如果使用可选的参数newmsg,那么进度条上的文本消息将变为该字符串。这让你可以给用户一个关于当前进度 的文本描述。

这个Update()方法通常返回True。但是,如果用户通过Cancel按钮已经取消了该对话框,那么下次的Update()将返回False。这是你响应用户的取消请求的机会。要检测用户的取消请求,我们建议你尽可能频繁地Update()。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值