文件加密时 Tkinter 滞后

Posted

技术标签:

【中文标题】文件加密时 Tkinter 滞后【英文标题】:Tkinter lag when file encrypting 【发布时间】:2021-12-21 13:32:24 【问题描述】:

我做了一个简单的加密应用,代码在这里-https://codeshare.io/ZJ7qJn

但是当我按下加密时,我的 tkinter 应用程序滞后并说没有响应,因此我无法在 tkinter 应用程序中按下任何内容,但它确实完成了加密过程。

有没有什么办法让它不卡顿?

【问题讨论】:

您的加密功能可能阻止了.mainloop,您可能想在另一个线程中进行加密,还应在问题中提供代码作为文本和minimal reproducible example 这能回答你的问题吗? How do you run your own code alongside Tkinter's event loop? 您将进行 10k 次迭代,这将需要大量处理,并且在这个数量上可能不会获得太多收益。无论如何,密码学无论如何都需要一些时间。您应该在这里使用不同的进程或至少一个线程。 【参考方案1】:

试试这个:

在函数encfile 中,将对fiencdone() 的调用替换为:

    root.event_generate("<<encryption_done>>")

在函数encfile的定义之后添加以下新的函数定义:

def run_encfile():
    from threading import Thread

    root.bind('<<encryption_done>>', encryption_done)
    Thread(target=encfile).start()

def encryption_done(*args):
    fiencdone()

最后,将第 75 行更改为调用 run_encfile 而不是 encfile

file_enc_button = tk.Button(fibutton_frame, text='Encrypt',font='Raleway 15 bold', width=15,command=run_encfile, borderwidth=3)

这将在单独的线程中运行加密,但调用fiencdone 表明加密已在主线程中完成,这是必需的,因为它会更新 GUI。

【讨论】:

谢谢。请您看看here 我尝试了所有方法,但似乎没有用。这是我需要的最后帮助。

以上是关于文件加密时 Tkinter 滞后的主要内容,如果未能解决你的问题,请参考以下文章

LUA的文件怎么加密?

文件加密后不能解密

EFS加密文件系统

EFS

MD5加密在用户注册时和用户登陆时怎么用?还有效验接收的文件时的问题

勒索病毒加密文件怎么解开