python pyqt5 Loading遮罩层

优点:
1、完美覆盖整个窗口,阻止点击事件
2、不会阻塞窗口
3、窗口拖动时自动跟随
4、可以使用 gif动图,也可以使用文字
5、使用简单,开包即用

代码:

#-*- coding: utf-8 -*
__author__ = 'geebos'
from PyQt5.Qt import *

class LoadingMask(QMainWindow):
    def __init__(self, parent, gif=None, tip=None):
        super(LoadingMask, self).__init__(parent)

        parent.installEventFilter(self)

        self.label = QLabel()

        if not tip is None:
            self.label.setText(tip)
            font = QFont('Microsoft YaHei', 10, QFont.Normal)
            font_metrics = QFontMetrics(font)
            self.label.setFont(font)
            self.label.setFixedSize(font_metrics.width(tip, len(tip))+10, font_metrics.height()+5)
            self.label.setAlignment(Qt.AlignCenter)
            self.label.setStyleSheet(
                'QLabel{background-color: rgba(0,0,0,70%);border-radius: 4px; color: white; padding: 5px;}')

        if not gif is None:
            self.movie = QMovie(gif)
            self.label.setMovie(self.movie)
            self.label.setFixedSize(QSize(160, 160))
            self.label.setScaledContents(True)
            self.movie.start()

        layout = QHBoxLayout()
        widget = QWidget()
        widget.setLayout(layout)
        layout.addWidget(self.label)

        self.setCentralWidget(widget)
        self.setWindowOpacity(0.8)
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.Dialog)
        self.hide()

    def eventFilter(self, widget, event):
        if widget == self.parent() and type(event) == QMoveEvent:
            self.moveWithParent()
            return True
        return super(LoadingMask, self).eventFilter(widget, event)

    def moveWithParent(self):
        if self.isVisible():
            self.move(self.parent().geometry().x(), self.parent().geometry().y())
            self.setFixedSize(QSize(self.parent().geometry().width(), self.parent().geometry().height()))

    @staticmethod
    def showToast(window, tip='加载中...', duration=500):
        mask = LoadingMask(window, tip=tip)
        mask.show()
        # 一段时间后移除组件
        QTimer().singleShot(duration, lambda :mask.deleteLater())


if __name__ == '__main__':
    import sys
    from PyQt5.QtWidgets import QApplication

    app = QApplication(sys.argv)

    widget = QWidget()
    widget.setFixedSize(500, 500)
    widget.setStyleSheet('QWidget{background-color:white;}')

    button = QPushButton('button')
    layout = QHBoxLayout()
    layout.addWidget(button)
    widget.setLayout(layout)

    loading_mask = LoadingMask(widget, '../images/loading.gif')
    loading_mask.show()
    widget.installEventFilter(loading_mask)
    widget.show()

    sys.exit(app.exec_())

效果图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python PyQt5 IDE是一种集成开发环境,用于编写、调试和运行基于PythonPyQt5库的应用程序。它提供了一整套开发工具,方便开发者进行代码编辑、自动完成、调试、界面设计等操作。 Python PyQt5 IDE具有以下几个主要特点: 1. 代码编辑功能:Python PyQt5 IDE提供了强大的代码编辑器,支持语法高亮、代码折叠、自动缩进、代码片段等功能,方便开发者编写高效、规范的代码。 2. 调试功能:Python PyQt5 IDE集成了调试器,可以帮助开发者快速定位和修复代码中的错误。它支持断点设置、变量监视、单步执行等功能,提高了调试效率。 3. 界面设计功能:Python PyQt5 IDE提供了可视化界面设计器,可以通过拖拽和连接控件的方式快速创建用户界面。开发者可以实时预览界面效果,快速调整布局和样式。 4. 插件扩展:Python PyQt5 IDE支持插件扩展,可以根据个人需求添加额外的功能和工具,提升开发效率。 5. 代码版本控制:Python PyQt5 IDE集成了代码版本控制系统,可以方便地管理项目的代码版本,并支持协同开发和代码合并。 总之,Python PyQt5 IDE是一款强大、易用的开发工具,可以帮助开发者快速开发PythonPyQt5应用程序,并提供丰富的功能和工具来简化开发过程。无论是新手还是经验丰富的开发者,都可以通过Python PyQt5 IDE提高开发效率和代码质量。 ### 回答2: Python PyQt5 IDE是一种用于开发和运行Python程序的集成开发环境(IDE)。PyQt5是一款流行的Python图形用户界面(GUI)框架,结合了Qt应用程序开发框架和Python编程语言,可以用于创建强大的跨平台和可定制的GUI应用程序。 Python PyQt5 IDE提供了一套完整的工具,包括代码编辑器、调试器、自动完成等功能,可以帮助开发人员更高效地编写和调试Python代码。IDE还提供了图形界面设计器,可以轻松创建和布局GUI元素,使界面设计更加简单和直观。 PyQt5 IDE还集成了Python解释器和调试器,可以方便地运行和调试Python程序。开发人员可以逐行调试代码,查看变量的值和程序执行流程,快速排查错误。 此外,PyQt5 IDE还支持版本控制,可以与Git等版本控制系统集成,方便团队协作和代码管理。IDE还提供了丰富的插件和扩展,可以根据开发需求进行定制和扩展。 总结而言,Python PyQt5 IDE是一个强大的集成开发环境,提供了丰富的功能和工具,帮助开发人员更高效地编写、调试和管理Python程序,同时使用PyQt5框架可以创建出美观、易用的图形界面应用程序。 ### 回答3: Python PyQt5 IDE是一种用于开发Python程序的集成开发环境。IDE是“Integrated Development Environment”的缩写,其主要作用是提供一个统一的界面和工具,方便开发人员编写、调试和运行程序。Python PyQt5 IDE是为使用PyQt5库进行开发Python程序提供的特定IDE。 Python PyQt5 IDE具有以下特点: 1. 可视化编程界面:PyQt5 IDE提供了一个易于使用的图形用户界面,开发人员可以通过拖放、点击等方式进行界面设计。这种可视化编程方式可以提高开发效率和代码质量。 2. 代码编辑器:IDE内置了一个代码编辑器,支持代码高亮、自动代码补全、语法检查等功能。这样可以帮助开发人员更快地编写正确的代码。 3. 调试器:PyQt5 IDE还集成了一个调试器,可以帮助开发人员进行代码调试。调试器可以设置断点、观察变量等,帮助开发人员定位和修复程序中的错误。 4. 版本控制:IDE支持版本控制系统,如Git,开发人员可以方便地管理和追踪代码的变化。 5. 丰富的工具集:除了上述功能,PyQt5 IDE还提供了其他有用的工具,如项目管理、集成终端、文档查看器等。这些工具可以帮助开发人员更高效地开发和测试程序。 总之,Python PyQt5 IDE是一个功能强大、易于使用的开发工具,可以帮助开发人员快速开发Python程序,并提供多种功能和工具来提高开发效率和代码质量。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值