dayu_widgets-加载组件:MLoading和MLoadingWrapper

news2024/10/10 22:13:26

一、使用场景

点击按钮加载数据,但是查询数据需要一定的耗时,这段时间需要显示加载中的UI来进行遮罩。

二、使用效果

三、使用案例

# 学习笔记 MLoading控件
import asyncio
from PySide2.QtWidgets import QWidget, QApplication, QVBoxLayout, QPushButton, QTextEdit
from qasync import QEventLoop, asyncSlot

from dayu_widgets import dayu_theme, MLoadingWrapper


class DemoWidget(QWidget):
    def __init__(self, parent=None):
        super(DemoWidget, self).__init__(parent)
        self.setWindowTitle("MLoading控件学习")
        # 布局
        self.main_layout = QVBoxLayout()
        self.setLayout(self.main_layout)

        # 添加一个查询按钮
        self.button = QPushButton("查询数据", self)
        self.button.clicked.connect(self.btn_handle)
        self.main_layout.addWidget(self.button)

        # 添加一个文本框用来显示加载的数据
        self.text_edit = QTextEdit(self)
        self.main_layout.addWidget(self.text_edit)

        # 这里要为显示的控件添加一个loading的wrapper,并且要添加到布局中!
        self.loading_wrapper = MLoadingWrapper(widget=self.text_edit, loading=False)
        self.main_layout.addWidget(self.loading_wrapper)

    @asyncSlot()
    async def btn_handle(self):
        # 开启加载
        self.loading_wrapper.set_dayu_loading(True)
        # 模拟查询耗时2秒
        await asyncio.sleep(2)
        # 结束加载
        self.loading_wrapper.set_dayu_loading(False)
        # 渲染数据
        self.text_edit.setText(
            "陌生人并不在意你的梦想是什么,"
            "他们寻求满足自己的需要和欲望。"
            "在你介入没有明确需求、品牌或目的的生意时,"
            "风险将会累积。"
            "当你去做一项自己喜欢而不是需要去做的生意时,风险在累积。" * 2)


if __name__ == '__main__':
    # 创建主循环
    app = QApplication([])

    # 创建异步事件循环
    loop = QEventLoop(app)
    asyncio.set_event_loop(loop)

    # 创建窗口
    demo_widget = DemoWidget()
    dayu_theme.apply(demo_widget)
    # 显示窗口
    demo_widget.show()
    loop.run_forever()

四、魔改案例

在添加的时候加上大小颜色参数

# 学习笔记 MLoading控件
import asyncio
from PySide2.QtWidgets import QWidget, QApplication, QVBoxLayout, QPushButton, QTextEdit
from qasync import QEventLoop, asyncSlot

from dayu_widgets import dayu_theme, MLoadingWrapper, MTheme


class DemoWidget(QWidget):
    def __init__(self, parent=None):
        super(DemoWidget, self).__init__(parent)
        self.setWindowTitle("MLoading控件学习")
        # 布局
        self.main_layout = QVBoxLayout()
        self.setLayout(self.main_layout)

        # 添加一个查询按钮
        self.button = QPushButton("查询数据", self)
        self.button.clicked.connect(self.btn_handle)
        self.main_layout.addWidget(self.button)

        # 添加一个文本框用来显示加载的数据
        self.text_edit = QTextEdit(self)
        self.main_layout.addWidget(self.text_edit)

        # 这里要为显示的控件添加一个loading的wrapper,并且要添加到布局中!
        self.loading_wrapper = MLoadingWrapper(widget=self.text_edit, loading=False, size=64, color=dayu_theme.red)
        self.main_layout.addWidget(self.loading_wrapper)

    @asyncSlot()
    async def btn_handle(self):
        # 开启加载
        self.loading_wrapper.set_dayu_loading(True)
        # 模拟查询耗时2秒
        await asyncio.sleep(2)
        # 结束加载
        self.loading_wrapper.set_dayu_loading(False)
        # 渲染数据
        self.text_edit.setText(
            "陌生人并不在意你的梦想是什么,"
            "他们寻求满足自己的需要和欲望。"
            "在你介入没有明确需求、品牌或目的的生意时,"
            "风险将会累积。"
            "当你去做一项自己喜欢而不是需要去做的生意时,风险在累积。" * 2)


if __name__ == '__main__':
    # 创建主循环
    app = QApplication([])

    # 创建异步事件循环
    loop = QEventLoop(app)
    asyncio.set_event_loop(loop)

    # 创建窗口
    demo_widget = DemoWidget()
    MTheme(theme="light", primary_color=MTheme.yellow).apply(demo_widget)
    # 显示窗口
    demo_widget.show()
    loop.run_forever()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2203292.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024双十一究竟买什么比较好?为您精选五款双十一必购好物清单!

2024年的双十一购物狂欢节即将到来,许多人已经开始思考在这个一年一度的购物盛宴中究竟应该选购哪些商品。为了帮助大家更好地把握这次购物机会,我们精心为您挑选了五款双十一期间必购的好物清单,确保您能够买到物超所值的宝贝! …

作业4-23

文章目录 标题1标题2 标题1 该不该好吧 标题2 写的PHP <?phpnamespace App\Http\Controllers;use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Foundation\Validation\ValidatesRequests; us…

文心一言 VS 讯飞星火 VS chatgpt (366)-- 算法导论24.3 8题

八、给定带权重的有向图 G ( V &#xff0c; E ) G(V&#xff0c;E) G(V&#xff0c;E) &#xff0c;其权重函数为 w : E → ( 0 &#xff0c; 1 &#xff0c; 2. … &#xff0c; W ) w:E→(0&#xff0c;1&#xff0c;2.…&#xff0c;W) w:E→(0&#xff0c;1&#xff0c…

RK3568 buildroot系统在安装popt出错的问题

RK3568 buildroot系统在安装popt出错的问题 简介 使用 buildroot 系统给 RK3568 制作系统的时候,编译系统到 popt 这个组件时,编译出错 故障现象 gzip: popt-1.16.tar.gz: not in gzip format 上面的报错就是说 gzip 认为这个压缩包不是可以识别的格式 问题复现 我们进…

996是性价比最低的工作方式,没有之一!

不知道从什么时候开始&#xff0c;“996”工作制&#xff08;即每周工作从早9点至晚9点&#xff0c;持续6天&#xff09;已经从网络热梗&#xff0c;变成了不少企业和职场人的“工作常态”。 尤其是现如今职场中越来越频繁的裁员降薪&#xff0c;为了保住一份工作&#xff0c;…

浅入深出之了解常见的用户登录校验

文章目录 一、Cookie-Session认证校验流程缺点 二、Token校验流程缺点 三、JWT校验流程 四、JWT令牌的实践使用JWT组成引入依赖生成令牌 前言 在讲解这个问题之前&#xff0c;我们要先搞清楚基本的用户登录流流程。 用户在web登录页面填写登录信息前端发送登录信息到后端后端接…

[红队apt]CHM电子书攻击/电子教程攻击

免责声明:本文用于了解攻击者的攻击手法&#xff0c;切勿用于不法用途 前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文主要整理当初电子书的时代&#xff0c;利用电子书攻击的操作 CHM电子书简介 这个在当初普遍用于做教程课件&#xff0c;软件说明等应用。…

音频响度归一化 - python 实现

在处理音频样本时&#xff0c;往往我们的音频样本由于录制设备&#xff0c;环境&#xff0c;人发音的音量大小的不同影响&#xff0c;会造成音频响度不统一&#xff0c;分布在一个不同的响度值域上。为了让语音模型更好的学习音频特征&#xff0c;就有必要对音频的响度进行归一…

android中byte[] buf没有结束符,new String(buf)会不会出错?

答案是&#xff1a;不会 看例子&#xff1a; 这和c是不一样的&#xff0c;不需要特别的在字符串后面添加一个\0结束.

誉天教育十月新班启航:开启技能升级之旅,抢占未来先机!

安全HCIP 晚班 2024/10/8 存储HCIE 晚班 2024/10/10 Linux云计算架构师 晚班周末班 2024/10/14 云服务HCIP 周末班 2024/10/26 云计算HCIP 周末班 2024/10/26 RHCE 周末班 2024/11/2 数通HCIE直通车 晚班 2024/11/4 AI大模型HCIE 晚班 2024/11/11 数通HCIE直通车…

C# String 类型:那些你可能不知道的秘密

前言 嗨&#xff0c;大家好&#xff01; 今天咱们来聊一聊一个看似简单却充满玄机的话题 —— String 类型。 字符串应该是所有编程语言中使用最频繁的一种基础数据类型。 在 C# 中&#xff0c;String 可谓是特别的存在&#xff1a;它是引用类型&#xff0c;存储在托管堆中…

插件生成XML

目录 1.数据库配置 2.在pom.xml中添加插件 3.generator文件配置 1.数据库配置 # 数据库配置 spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncodingutf8&useSSLfalseusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc…

双主轴车床的优势

双主轴车床作为现代制造业中的一项重要技术&#xff0c;其优势显而易见。下面我将从几个方面详细阐述双主轴车床的优势&#xff1a; ‌一、提高生产效率‌ ‌并行加工‌&#xff1a;双主轴车床最大的特点在于其能够同时在两个主轴上进行加工&#xff0c;这种并行加工方式使得在…

LCD -

LCD 目录 LCD 回顾 应用 - 1、首先将该LCD屏官方写好的三个文件添加进工程中的api文件夹中 - 2、找到LCD的初始化函数 - 3、在LCD屏幕上显示字符串 - 4、在LCD屏幕上显示图片 - 5、在LCD屏幕上显示汉字 例&#xff1a;在LCD屏幕上显示温湿度&#xff0c;时间代码 LC…

Unsupervised Deep Embedding for Clustering Analysis

0. 论文信息 标题&#xff1a;Unsupervised Deep Embedding for Clustering Analysis期刊&#xff1a;International Conference on Machine Learning作者&#xff1a;Junyuan Xie&#xff0c;Ross Girshick&#xff0c;Ali Farhadi机构&#xff1a;University of Washington&…

每日一题|3162. 优质数对的总数 I、II|因子分解、计数方法

第一题非常简单的暴力解法。 class Solution:def numberOfPairs(self, nums1: List[int], nums2: List[int], k: int) -> int:nums2_ [i * k for i in nums2]count 0for i in nums1:for j in nums2_:count 0 if i % j else 1return count 第二题的难度提升在数量级在10万…

[java毕业设计]免费分享一套SpringBoot+Vue电影推荐(电影网)系统【论文+源码+SQL脚本】,帅呆了~~

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringBootVue电影推荐(电影网)系统&#xff0c;分享下哈。 项目视频演示 【免费】SpringBootVue电影推荐(电影网)系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 如今社会上各行各业&#xff0c;都喜欢用…

大数据新视界 --大数据大厂之大数据如何重塑金融风险管理:精准预测与防控

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

第十七篇——无穷小(三):用动态和极限的眼光看世界

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 这个世界从互联网盛行信息爆炸的时候&#xff0c;就已经进入了无限思维时…

前端环境搭建一览记录

文章目录 写在前面Nodejs下载Nodejs介绍Nodejs下载方式nvm安装:安装Homebrew&#xff08;安装器&#xff09;(打开终端&#xff0c;输入下面的脚本)安装nvm验证安装是否成功配置环境内容查看环境内容刷新配置 nvm 使用如何使用nvm ls 查看当前安装的版本nvm use versionId 切换…