实际上我有一堆关于 wx.Python 中的 wx.ProgressDialog 的问题。
首先,我编写了一段代码,它可以操作 2 个文件进行一些计算并将结果写入一个新文件中。我需要在 GUI 中显示的是不确定模式下的进度对话框,仅供用户了解程序正在运行。
def transformation(e):
prg_dlg = wx.ProgressDialog("Processing Data", "Time elapsed", style = wx.PD_ELAPSED_TIME)
for line in pntfile.readlines():
pntlist = line.split(" ")
pntlist = [float(i) for i in pntlist]
l = ( const + Xn*pntlist[0] + Yn*pntlist[1] + Zn*pntlist[2])/(Xn**2 * Yn**2 * Zn**2)
Xm = pntlist[0] - Xn*l
Ym = pntlist[1] - Yn*l
Zm = pntlist[2] - Zn*l
outlist=[0,0,0]
outlist[0] = pntlist[0] / 2*(Xm-pntlist[0])
outlist[1] = pntlist[1] / 2*(Ym-pntlist[1])
outlist[2] = pntlist[2] / 2*(Zm-pntlist[2])
outdata = str('%.4f' %outlist[0])+" "+str('%.4f' %outlist[1])+" "+str('%.4f' %outlist[2])+"\n"
outfile.writelines(outdata)
prg_dlg.UpdatePulse()
wx.Yield()
pntfile.close()
outfile.close()
当我运行完整的应用程序时,会出现进度对话框,并且仪表来回太快,几乎看不到(在 MS WIN VISTA、7、XP、UBUNTU 上测试)
我想在对话框上放置一个按钮(例如确定),以便当程序完成计算时,用户可以按下它并且对话框可以关闭
最重要的是性能。当我在没有进度对话框的情况下使用输入文件中的 100 万行运行程序时,它会在不到一分钟的时间内完成。使用上面代码中显示的对话框时,需要超过 4 分钟才能完成。我怎样才能加快速度?
感谢您的回复。