当前位置: 首页 > wzjs >正文

中国建设银行个人信息网站宽带维修

中国建设银行个人信息网站,宽带维修,开封网站建设公司,wordpress视频播放系统加载本地大图片会有卡顿现象,因为imageLabel是同步加载 imageLabelQt小组件 - 3 imageLabel Qt小组件 - 2(布局)瀑布流布局,GridLayout,FlowLayout LoadImageThread最好使用线程池代替否则创建线程过多阻碍主线程刷新…

加载本地大图片会有卡顿现象,因为imageLabel是同步加载

imageLabelQt小组件 - 3 imageLabel

Qt小组件 - 2(布局)瀑布流布局,GridLayout,FlowLayout

LoadImageThread最好使用线程池代替否则创建线程过多阻碍主线程刷新

# coding: utf-8
import sys
from pathlib import Path
from typing import List, Unionfrom PySide6.QtCore import QRect, QThread, Signal, Qt, QThreadPool, QTimer
from PySide6.QtGui import QImage, QPixmap
from PySide6.QtWidgets import QVBoxLayout, QApplication, QScrollArea, QWidgetfrom components import ImageLabel, WaterfallLayoutclass LoadImageThread(QThread):loadSignal = Signal(QImage)def __init__(self, parent=None):super().__init__(parent)self.url = Nonedef run(self):if not self.url:returnif isinstance(self.url, (str, Path)):url = str(self.url)image = QImage(url)else:image = self.urlself.loadSignal.emit(image)def setUrl(self, url):self.url = urlself.start()class LazyLoadThread(QThread):loadSignal = Signal(object, object)def __init__(self, parent=None):super().__init__(parent)self.isStopped = Falseself.rect = QRect()self.labels = []  # type: List[LazyLoadImage]def run(self):try:self.verify()except Exception as e:print(e)def setData(self, rect: QRect, labels: List['LazyLoadImage']):self.rect = rectself.labels = labelsself.start()def verify(self):viewport_rect: QRect = self.rectfor item in self.labels:item_rect = item.geometry()if viewport_rect.intersects(item_rect):self.loadSignal.emit(item, True)else:self.loadSignal.emit(item, False)def stop(self):self.isStopped = Trueself.terminate()class LazyLoadImage(ImageLabel):def _postInit(self):self.dataSource = Noneself.loadThread = LoadImageThread(self)self.loadThread.loadSignal.connect(self.setImage)self.finished.connect(self.on_finished)def setDataSource(self, source: str):self.dataSource = sourcedef setImageUrl(self, url: str):self.loadThread.setUrl(url)def setLoading(self, loading: bool):if loading and self.isNull():if self.dataSource.startswith('http'):self.setUrl(self.dataSource)else:self.setImageUrl(self.dataSource)else:if self.isNull():returnself.setImageUrl(QImage())class LazyLoadScrollArea(QScrollArea):def __init__(self, parent=None):super().__init__(parent)self.labels = []self.timer = QTimer(self) # 避免多次加载self.lazy_load_thread = LazyLoadThread(self)self.lazy_load_thread.loadSignal.connect(self.on_load_signal)self.setWidget(QWidget())self.widget().setLayout(WaterfallLayout())self.setWidgetResizable(True)self.verticalScrollBar().valueChanged.connect(self.start)self.timer.timeout.connect(self.updateLazy)self.timer.setSingleShot(True)self.timer.setInterval(150)def on_load_signal(self, item: LazyLoadImage, loading: bool):try:item.setLoading(loading)item.finished.connect(lambda: item.scaledToWidth(item.width()))except Exception as e:print(e)def start(self):self.timer.stop()self.timer.start()def updateLazy(self):rect = self.viewport().rect()rect.translate(self.horizontalScrollBar().value(), self.verticalScrollBar().value())self.lazy_load_thread.setData(rect, self.labels)self.updateGeometry()def add_image(self, url: str):image_label = LazyLoadImage()image_label.setDataSource(url)image_label.setScaledContents(True)image_label.setMinimumHeight(400)self.labels.append(image_label)layout = self.widget().layout()layout.addWidget(image_label)if layout.sizeHint().height() < self.height():self.start()def resizeEvent(self, event):self.start()super().resizeEvent(event)def closeEvent(self, event):self.lazy_load_thread.stop()self.timer.stop()super().closeEvent(event)if __name__ == "__main__":app = QApplication(sys.argv)scroll_area = LazyLoadScrollArea()scroll_area.setWindowTitle("图片懒加载示例")scroll_area.resize(400, 600)# 添加一些图片URL到滚动区域image_urls = ["http://browser9.qhimg.com/bdm/1024_632_0/t010824ab8b5cdfa138.jpg","http://browser9.qhimg.com/bdm/512_316_0/t010448c46c1ecf7cab.jpg","http://browser9.qhimg.com/bdm/1024_632_0/t013a4ed4683039d101.jpg"]for url in image_urls:scroll_area.add_image(url)for url in Path(r'G:\手机\壁纸\碧蓝航线\5.26立绘\Picture').glob('*.*'):scroll_area.add_image(url.as_posix())scroll_area.show()sys.exit(app.exec())

连续创建了2675个组件左右,初次打开需要10S左右的时间

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/wzjs/836718.html

相关文章:

  • 如何验证网站自己做彩票网站犯法吗
  • 建设厅网站上保存键看不见可以自己做网站这么做
  • 企业网站推广方案上海建设网站企业邮箱网站建设服务
  • 怎么做软文代发平台网站珠海建设企业网站的公司
  • 峨山网站建设公众号怎么做微网站
  • 做网站 广州网站没域名
  • 荣成住房和城乡建设部网站移动端关键词优化
  • 哪些网站可以seo襄阳市建设厅官方网站
  • 夏邑网站建设营销策划公司是做什么的
  • 网站建设责任分工表巢湖网站制作
  • 江苏中南建设集团网站是多少网站推广经验
  • 长白山开发建设集团网站合肥网站建设网站建设
  • 网站名和域名厦门装修公司排名前十
  • 怎么做有趣的短视频网站一加手机官网网站
  • 广东 网站建设 公司排名盐城seo培训
  • 东莞建设局网站网站建设补充协议
  • 网站建设公司的方案公司网站管理属于什么职位
  • 网站的内容自己如何申请域名
  • 网站规划与建设周正刚云尚网站建设
  • 广州上宏网站建设国外做游戏评测的视频网站
  • 建立网站如何规划和实施建设WordPress禁用代码编辑器
  • 合肥网站建设推荐 晨飞网络win10系统做网站
  • 经典网站设计网站做网站价格差异很大
  • 滁州哪里做网站宣传片拍摄心得体会
  • 建网站需不需要服务器怎么给网站做aap
  • 美妆企业网站模板网站有域名没备案
  • 前端设计除了做网站还能做什么海淀网站建设公司电话
  • 谁做的四虎网站是多少敬请期待换个说法
  • 学生网站作品多开商城
  • 选择邯郸网站制作邯郸专业做网站哪里有