gpt4 book ai didi

python - PyQt - 在其他函数运行时显示 GIF

转载 作者:太空宇宙 更新时间:2023-11-03 16:25:52 24 4
gpt4 key购买 nike

我有一个将数据保存到文件的应用程序,有时保存功能需要相当长的时间,因为我的文件很大。我想在保存文件时显示“loading.gif”,但还没有弄清楚如何做到这一点。这是我的代码:

def saveBook(self):
self.loadingWidget.setHidden(not root.journal.status.loading.isHidden())
app.processEvents()
self.excelSheet.save(filename = self.file)
self.loadingWidget.setHidden(not root.journal.status.loading.isHidden())

LoadingWidget是保存GIF的QLabel(自动打开)。

  • 第一行打开 GIF 的可见性
  • 第二行立即处理/显示 GIF
  • 第三个运行保存函数(无论多长时间)
  • 第四行关闭 GIF。

GIF 已显示,但已暂停。如果我省略第四行,GIF 将在保存函数完成后播放,但我无法在保存函数运行时播放 GIF。我该如何去做呢?

编辑:建议的重复项不正确。那个人试图在标签旁边显示 gif。我试图在运行另一个函数 save 时播放 GIF 帧。 GIF 已经可见,但应用程序在当前save 函数完成之前不会处理其播放。

更新 - 解决方案:

def saveBook(self):
#Show GIF
root.saved.gif.on()
#Update frame
GLOB.app.processEvents()
#Save on separate thread to allow interface to remain active
t = threading.Thread(target=self.saveThread)
t.start()

def saveThread(self): #this function runs in background, allowing GIF to run in main thread
#Prevent multiple threads from queueing to save the file
if not self.lock.acquire(False):
return
self.b.save(self.file)
#Remove GIF
root.saved.gif.off()
self.lock.release()

最佳答案

当 QT 处理主事件循环中的其他代码时,GUI 不会更新。一般来说,当您不想阻塞 GUI 的长时间运行进程时,您可以将这些操作推送到单独的线程中。

关于python - PyQt - 在其他函数运行时显示 GIF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37982872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com