网站首页 > 技术文章 正文
实战wxPython系列-026
在一些GUI程序中, 程序需要执行一段运行时间较长的代码,这时候可能需要给用户一些可见的提示,以表明程序正在做一些事情以及事情的执行进度。在wxPython中提供了进度条对话框wx.ProgressDialog来实现这个功能。
一、wx. ProgressDialog
wx.ProgreessDialog表示一个显示短消息和进度条的对话框。它提供了进度对话框的通用实现。它可以显示终止(ABORT)和跳过(SKIP)按钮,以及进度结束的消耗时间、剩余时间和估计时间。
尽管wx.ProgressDialog并不是真正的模式对话框,但它就像其它模式对话框一样,它应该创建在堆栈上,而不是堆上,应该像下面的代码这样使用它:
progdlg = wx.ProgressDialog(...)
for i in range(100):
if not progdlg.Update(i):
# Cancelled by user.
break
... do something time-consuming (but not too much) ...
wx.ProgreessDialog窗口样式有:
- wx.PD_APP_MODAL:使进度对话框进入应用程序模式,即禁用所有应用程序窗口,只显示进度对话框。如果没有给出这个标志,它只是”局部”模式。
- wx.PD_AUTO_HIDE:一旦达到进度表的最大值,进度对话框从界面上消失。如果不存在这种样式,一旦达到最大值,对话框就会变成模态对话框(请参阅wx.Dialog.ShowModal),并等待用户解除它。
- wx.PD_SMOOTH:平滑进度控制(使用GA_SMOOTH模式的wx.Gauge控件)。
- wx.PD_CAN_ABORT:这个标志告诉对话框它应该有一个“取消”按钮,用户可以按下这个按钮。如果发生这种情况,下一次调用Update将返回False。
- wx.PD_CAN_SKIP:这个标志告诉对话框它应该有一个用户可以按下的“跳过”按钮。如果发生这种情况,下一次对Update的调用将在其skip参数中返回True。
- wx.PD_ELAPSED_TIME:这个标志告诉对话框它应该显示流逝的时间(自创建对话框以来)。
- wx.PD_ESTIMATED_TIME:这个标志告诉对话框它应该显示估计的时间。
- wx.PD_REMAINING_TIME:这个标志告诉对话框它应该显示剩余时间。
二、wx.ProgressDialog演示
下面的代码演示如何使用一个进度对话框wx.ProgressDialog。
#进度对话框(wx.ProgressDialog)
import wx
class SampleProgressDialog(wx.Frame):
def __init__(self, *args, **kw):
super(SampleProgressDialog, self).__init__(*args, **kw)
self.InitUi()
def InitUi(self):
#设置标题
self.SetTitle("实战wxPython: ProgressDialog演示")
#设置窗口尺寸
self.SetSize(400, 280)
panel = wx.Panel(self)
btnTest = wx.Button(panel, label="测试进度对话框", pos = (100, 20))
btnTest.Bind(wx.EVT_BUTTON, self.OnTestProgressDialog)
self.Centre()
def OnTestProgressDialog(self, e):
porgressMax = 100
dlg = wx.ProgressDialog("进度条演示", "进度", porgressMax, style = wx.PD_CAN_ABORT | wx.PD_ELAPSED_TIME | wx.PD_REMAINING_TIME)
keepGoing = True
count = 0
while keepGoing and count < porgressMax:
count += 1
wx.MilliSleep(100)
keepGoing = dlg.Update(count)
dlg.Destroy()
def main():
app = wx.App()
sample = SampleProgressDialog(None)
sample.Show()
app.MainLoop()
if __name__ == "__main__":
main()
运行上面的代码,在主窗口中点击"测试进度对话框",然后弹出一个进度对话框,该在示例中, 对话框的样式设置为:
style = wx.PD_CAN_ABORT | wx.PD_ELAPSED_TIME | wx.PD_REMAINING_TIME
对话框每隔100毫秒刷新一次,包括刷新进度条, 更新用时和剩余时间等信息。可以调整style的设置,进度对话框可以有不同的信息显示。
三、本文知识点
- 了解和使用通用进度条对话框wx.ProgressDialog。
前一篇:wxPython - 查找替换对话框FindReplaceDialog
请关注,评论,收藏,点赞,和转发。
猜你喜欢
- 2024-09-26 神奇的pv命令--直观查看压缩和解压文件时的进度
- 2024-09-26 多线程之 AsyncTask 使用详解和从源码中深入理解 AsyncTask 机制
- 2024-09-26 Flutter 对 iOS、Android(双端开发者)的快速理解(二)
- 2024-09-26 用RxJava优雅的执行并发网络请求(rxjava 多个网络请求)
- 2024-09-26 Flutter项目如何将任务转移到后台线程?Flutter后台任务的写法
- 2024-09-26 精心整理:移动应用常见的Bug汇总及预防方法
- 2024-09-26 「技术」Qt对话框讲解(qt对话框关闭按钮禁灰)
- 2024-09-26 数据连接相关类简介(数据连接性问题)
- 2024-09-26 一行代码解决重复点击问题(重复一句话的代码)
- 2024-09-26 MUI框架原生wepApp启动遇到过的坑与总结
- 1515℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 579℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 515℃MySQL service启动脚本浅析(r12笔记第59天)
- 487℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 486℃启用MySQL查询缓存(mysql8.0查询缓存)
- 471℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 451℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 449℃MySQL server PID file could not be found!失败
- 最近发表
-
- 宝塔面板Nginx如何提高网站访问速度?
- 接口调试工具ApiPost中form-data/x-www-form-urlencoded/raw区别
- 高并发场景下,Nginx性能如何提升10倍?
- 高并发场景下,Nginx如何抗住千万级流量?
- 浏览器中在线预览pdf文件,pdf.mjs插件实现web预览pdf
- 为什么你的网站加载慢?90%的人忽略了这2个设置。
- 别再无脑复制Nginx配置了!掌握这10个"性能核弹"级参数
- 你的Nginx配置,可能就是你网站最慢的一环,注意这几个优化参数
- 深入浅出HTTP压缩技术(http2压缩)
- C程序设计之:1-1/2+1/3-... + 1/n 的和
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (83)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)