pyqt5 等待界面 (QMovie 加载 gif)

login/register loading interface.
loading.gif
loading.gif是从 http://www.sucaijishi.com/gif-11-57-1.html找的图

class LoadingProgress(QtWidgets.QDialog):
    update_signal = QtCore.pyqtSignal(bool)

    def __init__(self, parent=None):
        super(LoadingProgress, self).__init__(parent)
        self.value = 0
        self.update_signal.connect(self.update_progress)
        vbox = QtWidgets.QVBoxLayout(self)
        self.steps = [f"连接服务器中({TIMEOUT}s)...",
                      "发送数据中...",
                      "接收数据中...",
                      "解析数据中..."]
        self.movie_label = QtWidgets.QLabel()
        self.movie = QtGui.QMovie("images/loading.gif")
        self.movie_label.setMovie(self.movie)
        self.movie.start()
        self.progress_label = QtWidgets.QLabel()
        self.label_update()

        vbox.addWidget(self.movie_label)
        vbox.addWidget(self.progress_label)
        self.setLayout(vbox)
        # self.exec_()
        
    def label_update(self):
        self.progress_label.setText(self.steps[self.value])

    def update_progress(self, boolean: bool) -> None:
        self.value += 1
        if boolean and self.value < len(self.steps):
            self.label_update()
        else:
            self.close()

阻塞调用:

self.exec_()

非阻塞调用:

self.show()

源代码就不发了, 今天就发v2.6的更新, 顺带发了

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
在PyQt中,可以通过自定义启动画面来增加应用程序的专业感和用户体验。下面是一种实现自定义启动画面的方法: 1. 创建一个新的启动画面窗口类,继承自QMainWindow或QWidget。 2. 在该类中,可以添加自定义的UI元素,例如Logo、进度条等。 3. 在启动画面窗口类的构造函数中,设置窗口的样式、大小和位置等属性。 4. 在应用程序的主窗口类中,创建一个启动画面窗口对象,并在应用程序启动时显示该窗口。 5. 在应用程序初始化过程中,可以执行一些耗时的操作,例如加载资源、初始化数据等。 6. 在耗时操作完成后,关闭启动画面窗口,并显示应用程序的主窗口。 下面是一个简单的示例代码,演示了如何实现自定义启动画面: ```python from PyQt5.QtWidgets import QApplication, QMainWindow, QSplashScreen, QLabel from PyQt5.QtGui import QPixmap from PyQt5.QtCore import Qt, QTimer class SplashScreen(QMainWindow): def __init__(self): super().__init__() self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint) self.setFixedSize(400, 300) # 添加自定义UI元素 label = QLabel(self) pixmap = QPixmap('logo.png') label.setPixmap(pixmap) label.setAlignment(Qt.AlignCenter) self.show() class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle('My Application') self.setGeometry(100, 100, 800, 600) # 执行耗时操作 self.load_data() self.show() def load_data(self): # 模拟耗时操作 QTimer.singleShot(3000, self.close_splashscreen) def close_splashscreen(self): self.splashscreen.close() if __name__ == '__main__': app = QApplication([]) # 创建启动画面窗口对象 splashscreen = SplashScreen() # 创建应用程序主窗口对象 mainwindow = MainWindow() mainwindow.splashscreen = splashscreen app.exec_() ``` 在上述示例代码中,SplashScreen类是自定义的启动画面窗口类,MainWindow类是应用程序的主窗口类。在MainWindow类中,通过load_data()方法模拟了一个耗时操作,并使用QTimer.singleShot()方法延迟3秒后关闭启动画面窗口。 请注意,上述示例代码中使用了Qt的定时器来模拟耗时操作,实际应用中需要根据具体需求进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值