【发布时间】:2021-03-10 00:45:14
【问题描述】:
我正在开发一个基于 pyqt5 的 GUI python 程序。当我按下计算程序开始计算时,我想让用户知道它正在计算。我尝试在计算开始时使用 .gif 动画制作 QDialog,并在计算结束时关闭它。我遇到了一个问题,我要么得到没有 .gif 动画的空白窗口,要么动画开始但它阻塞了主窗口。我也尝试过使用 QThread 但没有运气。我发现 QDialog 完全阻止了您的应用程序执行。你能帮我解决这个问题吗?感谢您的回复!
这是动画对话框类的代码,主程序执行但.gif动画不显示:
class LoadingScreen:
"""Loading screen animation."""
def __init__(self, gif_path):
self.dlg = QDialog()
self.dlg.setWindowTitle("Loading")
self.dlg.setWindowModality(False)
self.dlg.setFixedSize(200, 200)
self.dlg.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.CustomizeWindowHint)
self.label_animation = QLabel(self.dlg)
self.movie = QMovie(gif_path)
self.label_animation.setMovie(self.movie)
def start_animation(self):
self.movie.start()
self.dlg.show()
def stop_animation(self):
self.movie.stop()
self.dlg.done(0)
【问题讨论】:
-
QDialog 确实 not 阻止任何东西,如果您正确调用并执行它。请提供minimal, reproducible example,包括您创建和显示对话框的部分。
标签: python python-3.x user-interface pyqt pyqt5