def creabackuno():
startbar()
messagebox.showinfo( "Wait..","I am creating the backup, please wait...")
try:
copytree(path,r"backupdirbackup1.minecraft")
messagebox.showinfo( "OK!","Backup (1) created!")
stopbar()
except OSError as exc:
messagebox.showerror( "Nope!","There is already a backup to restore")
stopbar()
我的进度条有问题:
startbar() 启动图形界面上的进度条,但是当启动 shutil(copytree(path,r"backup\dirbackup1.minecraft")) 时,界面冻结和进度条停止,直到完成。谢谢
我正在使用Python 3.3
对不起,我的英语不好
进度条显示什么? 如果您尝试显示复制文件的百分比,则必须首先获取文件的总长度/字节数,然后定期更新复制的字节数。 这将需要使用"after"每隔几毫秒检查一次复制到文件的大小(我想我只是在这里猜测,但首先搜索,因为必须有人已经做过这样的事情。 这是我发现的第一个链接 https://mail.python.org/pipermail/tkinter-discuss/2010-December/002613.html 它可能比你想要的要多,但应该会有所帮助。
copytree
是一个同步函数,因此所有代码执行都将停止,直到完成。尽管 tkinter 很遗憾不是线程安全的,但我建议您将该命令放在另一个线程中:
from thread import start_new_thread as snt
#from _thread import start_new_thread as snt for python 3
def copy(onError,onEnd):
try: copytree(path,r"backupdirbackup1.minecraft")
except:
onError()
return
onEnd()
def onEnd():
messagebox.showinfo( "OK!","Backup (1) created!")
stopbar()
def onError():
messagebox.showerror( "Nope!","There is already a backup to restore")
stopbar()
#then call with
snt(copy,(onError,onEnd))
如果失败,则执行错误,并在成功时执行。
self.pgBar.step(x)
语句后使用self.Frame.update_idletasks()
,其中"x"代表进度条的值增加的值