Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
PySide6 QLabel中QMovie的宽高比缩放技巧_创想鸟

PySide6 QLabel中QMovie的宽高比缩放技巧

pyside6 qlabel中qmovie的宽高比缩放技巧

本文详细介绍了在PySide6应用中,如何使QLabel显示QMovie(如GIF动画)时,在调整QLabel大小的同时保持QMovie的原始宽高比。由于QMovie默认不提供可靠的scaledSize()方法,教程通过自定义ScaledLabel类,重写setMovie和paintEvent,巧妙地计算原始帧尺寸并应用Qt.KeepAspectRatio策略,确保动画在各种尺寸下都能正确、流畅地缩放显示。

1. 引言:QMovie宽高比缩放的挑战

在PySide6开发中,QLabel常用于显示图片(QPixmap)或动画(QMovie)。对于QPixmap,我们可以方便地使用QPixmap.scaled(w, h, aspectMode, mode)方法,并设置aspectMode为Qt.KeepAspectRatio来轻松实现宽高比保持的缩放。然而,QMovie对象并没有直接的.scaled()方法,它提供了一个QMovie.setScaledSize(size)方法,但该方法只接受一个QSize参数,并且更重要的是,QMovie.scaledSize()在未显式设置前通常返回无效的QSize(-1, -1),这使得我们无法直接获取动画的原始尺寸进行计算。

这就引出了一个核心问题:如何在QLabel显示QMovie时,既能响应QLabel的尺寸变化,又能自动计算出符合原始宽高比的最大尺寸,并将其应用到QMovie上?

2. 解决方案概述:自定义ScaledLabel

为了解决上述问题,我们需要创建一个自定义的QLabel子类,即ScaledLabel。这个类将通过重写关键方法来管理QMovie的尺寸和绘制行为:

获取原始尺寸: 由于QMovie.scaledSize()不可靠,我们需要一种方法来迭代QMovie的所有帧,从而计算出动画的实际原始尺寸。设置最小尺寸提示: 提供一个基于动画原始宽高比的最小尺寸提示,以确保QLabel不会被缩放得过小而失去比例。重绘事件处理: 在QLabel的paintEvent中,根据当前QLabel的可用空间和动画的原始宽高比,计算出最佳的缩放尺寸,并应用到QMovie上进行绘制。

3. ScaledLabel类的实现

下面是ScaledLabel类的完整实现代码:

import sysfrom PySide6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QLabel, QPushButtonfrom PySide6.QtGui import QMovie, QPainter, QPixmapfrom PySide6.QtCore import QSize, Qt, QRectclass ScaledLabel(QLabel):    def __init__(self, *args, **kwargs):        super().__init__(*args, **kwargs)        self._movieSize = QSize()  # 存储QMovie的原始尺寸        self._minSize = QSize()    # 存储基于原始宽高比的最小尺寸提示    def minimumSizeHint(self):        """        提供一个最小尺寸提示,确保QLabel不会被缩放得过小而失真。        """        if self._minSize.isValid():            return self._minSize        return super().minimumSizeHint()    def setMovie(self, movie):        """        重写setMovie方法,用于设置QMovie并计算其原始尺寸及最小尺寸提示。        """        if self.movie() == movie:            return        super().setMovie(movie)        if not isinstance(movie, QMovie) or not movie.isValid():            self._movieSize = QSize()            self._minSize = QSize()            self.updateGeometry()            return        # 1. 获取QMovie的原始尺寸        # QMovie.scaledSize()默认不可靠,需要遍历帧来确定实际尺寸        current_frame_number = movie.currentFrameNumber()        movie_state = movie.state()        movie.jumpToFrame(0) # 跳转到第一帧开始计算        # 通过合并所有帧的矩形来获取动画的完整边界        rect = QRect()        for i in range(movie.frameCount()):            movie.jumpToNextFrame()            rect |= movie.frameRect() # 合并当前帧的矩形        width = rect.x() + rect.width()        height = rect.y() + rect.height()        self._movieSize = QSize(width, height)        # 2. 计算基于原始宽高比的最小尺寸提示        # 确保QLabel有一个合理的最小尺寸,同时保持宽高比        if width > 0 and height > 0: # 避免除以零            minimum_dim = min(width, height)            maximum_dim = max(width, height)            ratio = maximum_dim / minimum_dim            base_size_val = min(4, minimum_dim) # 设置一个较小的基准尺寸,例如4像素            # 根据原始宽高比计算最小尺寸            if minimum_dim == width: # 如果宽度是较小的一边                self._minSize = QSize(base_size_val, round(base_size_val * ratio))            else: # 如果高度是较小的一边                self._minSize = QSize(round(base_size_val * ratio), base_size_val)        else:            self._minSize = QSize(4, 4) # 默认最小尺寸        # 3. 恢复QMovie到原始状态        movie.jumpToFrame(current_frame_number)        if movie_state == movie.MovieState.Running:            movie.setPaused(False)        self.updateGeometry() # 通知布局管理器更新几何形状    def paintEvent(self, event):        """        重写paintEvent方法,根据QLabel的可用空间和动画原始宽高比进行绘制。        """        movie = self.movie()        if not isinstance(movie, QMovie) or not movie.isValid():            super().paintEvent(event)            return        qp = QPainter(self)        self.drawFrame(qp) # 绘制QLabel的边框和背景        content_rect = self.contentsRect()        margin = self.margin()        content_rect.adjust(margin, margin, -margin, -margin) # 考虑边距        style = self.style()        alignment = style.visualAlignment(self.layoutDirection(), self.alignment())        # 根据QLabel的可用空间和QMovie的原始尺寸计算最佳缩放尺寸        # 使用Qt.KeepAspectRatio确保宽高比不变        maybe_scaled_size = self._movieSize.scaled(content_rect.size(), Qt.KeepAspectRatio)        # 优化:只有当计算出的缩放尺寸与QMovie当前设置的尺寸不同时才更新        if maybe_scaled_size != movie.scaledSize():            movie.setScaledSize(maybe_scaled_size) # 设置QMovie的缩放尺寸            # 绘制当前帧的缩放版本            style.drawItemPixmap(                qp, content_rect, alignment,                 movie.currentPixmap().scaled(content_rect.size(), Qt.KeepAspectRatio)            )        else:            # 如果尺寸未变,直接绘制当前帧,避免不必要的缩放操作            style.drawItemPixmap(                qp, content_rect, alignment,                 movie.currentPixmap()            )

4. 代码解析与注意事项

4.1 __init__方法

_movieSize: QSize类型,用于存储通过帧迭代计算出的QMovie的实际原始宽度和高度。_minSize: QSize类型,用于存储基于原始宽高比计算出的QLabel的最小尺寸提示。

4.2 minimumSizeHint方法

此方法是QWidget的虚函数,用于告诉布局管理器此widget的推荐最小尺寸。我们返回_minSize,确保QLabel在缩小时能保持动画的宽高比,并有一个可读的最小尺寸。

4.3 setMovie方法

这是核心逻辑之一,负责初始化QMovie并获取其原始尺寸。

尺寸获取挑战: 再次强调,QMovie.scaledSize()在未显式设置前通常返回QSize(-1, -1)。因此,我们需要一种替代方案。遍历帧获取尺寸:为了获取QMovie的原始尺寸,我们遍历QMovie的所有帧。movie.jumpToFrame(0)和movie.jumpToNextFrame()用于逐帧访问。movie.frameRect()返回当前帧的矩形。通过使用rect |= movie.frameRect(),我们可以将所有帧的矩形合并,从而得到整个动画的实际边界,即原始尺寸。在计算完尺寸后,会恢复QMovie到之前的帧和播放状态。计算最小尺寸提示 (_minSize):根据计算出的_movieSize,我们推导出_minSize。这个尺寸是一个小的基准尺寸(例如,最小边长为4像素),但保持了原始动画的宽高比。base_size_val = min(4, minimum_dim) 确保了即使动画原始尺寸很小,最小尺寸提示也不会过大。if minimum_dim == width: 及其else分支处理了横向和纵向动画的宽高比计算,确保_minSize的width和height与原始动画比例一致。self.updateGeometry(): 通知父布局管理器QLabel的尺寸提示可能已更改,需要重新布局。

4.4 paintEvent方法

这是另一个核心逻辑,负责在QLabel需要重绘时进行缩放和绘制。

获取可用内容区域: self.contentsRect()获取QLabel的内部内容区域,并减去margin以得到实际可用于绘制动画的区域。计算缩放尺寸:self._movieSize.scaled(content_rect.size(), Qt.KeepAspectRatio)是关键。它使用之前计算出的_movieSize(原始尺寸)和QLabel的当前可用内容区域,结合Qt.KeepAspectRatio策略,计算出动画应该被缩放到的最佳尺寸。优化绘制:if maybe_scaled_size != movie.scaledSize(): 这个条件判断非常重要,它避免了不必要的movie.setScaledSize()调用和currentPixmap().scaled()操作。只有当计算出的最佳缩放尺寸与QMovie当前已设置的缩放尺寸不同时,才调用movie.setScaledSize()更新QMovie的内部缩放尺寸,并绘制movie.currentPixmap().scaled(…)。如果尺寸相同,则直接绘制movie.currentPixmap(),这可以显著提高性能,避免在每次重绘时都重新缩放QPixmap。style.drawItemPixmap(): 这是Qt绘制QPixmap的标准方式,它处理了对齐等细节。

5. 完整示例:如何使用ScaledLabel

为了演示ScaledLabel的用法,请确保你有一个名为example.gif的GIF文件与你的Python脚本在同一目录下。

# 导入必要的模块# from PySide6.QtWidgets import QLabel, QApplication, QMainWindow, QVBoxLayout, QWidget, QPushButton# from PySide6.QtGui import QMovie, QPainter, QPixmap# from PySide6.QtCore import QSize, Qt, QRect, QEvent# (ScaledLabel class定义已在上面提供)if __name__ == '__main__':    app = QApplication(sys.argv)    window = QMainWindow()    central_widget = QWidget()    window.setCentralWidget(central_widget)    layout = QVBoxLayout(central_widget)    # 创建 ScaledLabel 实例    gif_label = ScaledLabel()    # 加载 GIF 动画文件    # 请确保 'example.gif' 存在于脚本同级目录,或者提供完整路径    movie = QMovie("example.gif")    if movie.isValid():        gif_label.setMovie(movie) # 设置 QMovie 到 ScaledLabel        movie.start() # 开始播放动画    else:        print("错误:无法加载 GIF 动画文件。请检查文件路径和格式。")        gif_label.setText("GIF加载失败") # 如果加载失败,显示文本提示    # 将 ScaledLabel 添加到布局    layout.addWidget(gif_label)    # 添加其他控件,以便观察窗口缩放对 GIF 的影响    info_label = QLabel("请调整窗口大小,观察GIF动画如何保持宽高比缩放。")    info_label.setAlignment(Qt.AlignCenter)    layout.addWidget(info_label)    # 允许 gif_label 扩展以填充可用空间    layout.setStretchFactor(gif_label, 1)     # 设置窗口标题和初始大小    window.setWindowTitle("PySide6 QMovie 宽高比缩放示例")    window.setGeometry(100, 100, 600, 400) # (x, y, width, height)    window.show()    sys.exit(app.exec())

运行此代码,你将看到一个窗口显示GIF动画。尝试调整窗口大小,你会发现GIF动画会随着QLabel的尺寸变化而等比例缩放,始终保持其原始的宽高比,而不会出现拉伸或压缩的情况。

6. 总结

通过自定义ScaledLabel类并重写setMovie和paintEvent方法,我们成功解决了PySide6中QLabel显示QMovie时保持宽高比缩放的难题。关键在于:

手动计算原始尺寸: 克服QMovie.scaledSize()的局限性,通过遍历帧来获取动画的真实原始尺寸。提供最小尺寸提示: 确保QLabel在极端缩放情况下仍能保持良好的视觉效果。智能绘制逻辑: 在paintEvent中根据可用空间动态计算缩放尺寸,并进行优化,避免不必要的重复缩放操作,从而保证动画的流畅性和性能。

这种方法提供了一个健壮且高效的解决方案,适用于需要在PySide6应用中动态显示和缩放GIF或其他QMovie动画的场景。

以上就是PySide6 QLabel中QMovie的宽高比缩放技巧的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1372591.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Pandas时间戳格式化:解决strftime不支持带冒号时区格式的问题
上一篇 2025年12月14日 12:26:54
Python怎么获取当前日期和时间_Python日期与时间获取方法
下一篇 2025年12月14日 12:27:00

相关推荐

  • 灵通资讯字体大小设置方法

    灵通资讯字体大小设置方法灵通资讯字体大小设置方法灵通资讯字体大小设置方法灵通资讯字体大小设置方法

    如何在灵通资讯app中调整字体大小?本文将为您一步步讲解具体操作流程,帮助您快速完成设置,优化阅读舒适度。 1、 启动灵通资讯App后,在首页左上角找到并点击头像图标。 2、 跳转至个人页面后,点击右上角的“设置”图标进入系统选项。 3、 在设置菜单中,选择“字体大小”这一项。 搜狐资讯 AI资讯助…

    2026年9月25日 • 用户投稿
    100
  • 微软收回弃用 Windows 控制面板的决定?

    微软收回弃用 Windows 控制面板的决定?微软收回弃用 Windows 控制面板的决定?微软收回弃用 Windows 控制面板的决定?微软收回弃用 Windows 控制面板的决定?

    上周,微软曾发布了一份支持文档,宣布将正式淘汰已有39年历史的windows控制面板。然而,现在微软似乎改变了主意,删除了之前提到的关于控制面板将被设置应用取代的说法。目前还不清楚这是微软政策的转变,还是仅仅是对措辞的调整。截至本文撰写时,微软尚未就此发表任何评论。 微软之前的表述是:“控制面板即将…

    2026年9月25日 • 用户投稿
    100
  • 几个方法教会你windows10电脑如何录屏

    几个方法教会你windows10电脑如何录屏几个方法教会你windows10电脑如何录屏几个方法教会你windows10电脑如何录屏几个方法教会你windows10电脑如何录屏

    随着如今电脑技术的持续发展,不断升级的电脑系统总会带来许多新功能。前几天,有位粉丝朋友在网上的评论区向我提问,询问如何用windows 10电脑进行录屏。实际上,这个问题并不复杂,因为我们的电脑本身就已经具备这一功能了。下面,我就详细地为大家讲解一下具体的操作步骤。 首先,我们打开电脑,在桌面右下角…

    2026年9月25日 • 用户投稿
    300
  • 松下携全场景智慧生活方案亮相第四届数贸会旗舰洗护新品首秀

    松下携全场景智慧生活方案亮相第四届数贸会旗舰洗护新品首秀松下携全场景智慧生活方案亮相第四届数贸会旗舰洗护新品首秀松下携全场景智慧生活方案亮相第四届数贸会旗舰洗护新品首秀松下携全场景智慧生活方案亮相第四届数贸会旗舰洗护新品首秀

    第四届全球数字贸易博览会(以下简称“数贸会”)于2025年9月25日在杭州大会展中心隆重启幕。松下电器以“百年匠心 智慧怡居”为主题,携全系列住空间家电产品及创新互动体验登陆8号馆智慧空间展区,通过场景化展陈展示数字技术驱动下的高品质生活解决方案,并联动松下商城打造多元互动模式,推动数字贸易与消费体…

    2026年9月25日 • 用户投稿
    200
  • 豆包AI如何调用外部API 实现AI与第三方服务联动的方法

    本文旨在探讨豆包AI如何通过调用外部API,从而实现与第三方服务的智能联动。我们将详细介绍实现这一功能的核心原理以及具体的操作步骤。通过理解API调用的机制并在豆包AI中进行相应的配置,用户可以赋予豆包AI连接互联网世界、获取实时信息、执行特定任务的能力,极大地扩展了AI的应用场景和智能化水平。文章…

    2026年9月25日
    000
  • sublime怎么设置python linter_sublime Python Linter配置方法

    sublime怎么设置python linter_sublime Python Linter配置方法sublime怎么设置python linter_sublime Python Linter配置方法sublime怎么设置python linter_sublime Python Linter配置方法sublime怎么设置python linter_sublime Python Linter配置方法

    首先安装SublimeLinter插件及SublimeLinter-pylint或SublimeLinter-flake8,然后通过pip安装pylint或flake8,最后在SublimeLinter设置中配置Python可执行文件路径和检查模式,启用实时与保存时检查即可实现Python代码质量监…

    2026年9月25日 • 用户投稿
    000
  • 动态缓存键配置:Spring Boot 缓存管理的灵活应用

    动态缓存键配置:Spring Boot 缓存管理的灵活应用动态缓存键配置:Spring Boot 缓存管理的灵活应用动态缓存键配置:Spring Boot 缓存管理的灵活应用动态缓存键配置:Spring Boot 缓存管理的灵活应用

    在 Spring Boot 应用中,使用 @Cacheable 注解可以方便地实现缓存功能。然而,在某些场景下,我们需要根据请求参数动态地生成缓存键,而不是简单地使用固定的键值。虽然 @Cacheable 注解允许通过 key 属性指定 SpEL 表达式来生成缓存键,但有时我们可能需要更灵活的控制,…

    2026年9月25日 • 用户投稿
    200
  • Chrome浏览器怎么把所有标签页加入书签_一键收藏全部打开的标签页

    Chrome浏览器怎么把所有标签页加入书签_一键收藏全部打开的标签页Chrome浏览器怎么把所有标签页加入书签_一键收藏全部打开的标签页Chrome浏览器怎么把所有标签页加入书签_一键收藏全部打开的标签页Chrome浏览器怎么把所有标签页加入书签_一键收藏全部打开的标签页

    1、使用Ctrl+Shift+D可将当前所有标签页一键保存为书签文件夹;2、通过安装“Save All Tabs”等扩展程序实现选择性保存或导出链接;3、手动拖拽标签至书签栏后,利用书签管理器归类整理。 如果您在Chrome浏览器中打开了多个需要长期保存的网页标签,手动逐一收藏会非常耗时。通过特定操…

    2026年9月25日 • 用户投稿
    200
  • 为什么不同浏览器对硬件加速的实现存在差异?

    不同浏览器因渲染引擎、图形API及权衡策略差异导致硬件加速表现不同。1. Blink、Gecko、WebKit引擎在图层管理与GPU任务分配上设计不同;2. 各浏览器通过ANGLE等抽象层适配DirectX、Vulkan、Metal,转换开销与支持程度影响性能;3. 厂商在性能、兼容性、稳定性间取舍…

    2026年9月25日
    100
  • 这台五万元的相机,哈苏想卖给「普通人」

    这台五万元的相机,哈苏想卖给「普通人」这台五万元的相机,哈苏想卖给「普通人」这台五万元的相机,哈苏想卖给「普通人」这台五万元的相机,哈苏想卖给「普通人」

    拍照,可能是这个时代门槛最低的创作行为了。 我们每天都在生产和消费着海量的图片,记录变得前所未有地容易,但容易,就等于好吗? 过去,哈苏的答案是倾向于「好」,但代价是「难」——你需要理解光圈、快门,要背着沉重的三脚架,甚至要在特定的拍摄环境中,才能驾驭这份极致的画质。 在推出了备受瞩目的 X2D 1…

    2026年9月25日 • 用户投稿
    200
  • 豆包是否可以本地部署 自主可控环境下运行豆包的技术路径说明

    本文旨在解答关于豆包是否可以在本地环境下进行部署并实现自主可控运行的问题。目前,豆包主要以云服务形式提供,用户通过网络访问其功能。要在自主可控的环境下运行类似的大型语言模型能力,通常需要采用不同的技术路径,即在本地计算资源上部署可用的AI模型。本文将概述实现本地自主可控AI运行的通用技术路线和关键步…

    2026年9月25日
    300
  • 荣耀 300 系列系统升级,后续多款新机待发

    荣耀 300 系列系统升级,后续多款新机待发荣耀 300 系列系统升级,后续多款新机待发荣耀 300 系列系统升级,后续多款新机待发荣耀 300 系列系统升级,后续多款新机待发

    日前,荣耀 300 系列手机迎来 magicos 9.0.0.187 版本升级,此次更新带来了清理建议、ai 通话等多项新功能,系统升级将以分批推送的形式逐步覆盖用户。 本次更新的主要亮点如下: 图库方面新增“清理建议”功能,可智能识别重复照片、相似图片及超大视频,帮助用户更高效地管理存储空间; 通…

    2026年9月25日 • 用户投稿
    500
  • 动态缓存键在Spring Boot中的实现教程

    动态缓存键在Spring Boot中的实现教程动态缓存键在Spring Boot中的实现教程动态缓存键在Spring Boot中的实现教程动态缓存键在Spring Boot中的实现教程

    本文介绍了如何在Spring Boot应用中实现基于请求参数的动态缓存键。通过直接操作CacheManager获取缓存对象,并使用cache.get(key, () -> …)方法,可以灵活地根据请求参数生成缓存键,从而实现更精细化的缓存控制。这种方法避免了直接修改缓存名称,而是专…

    2026年9月25日 • 用户投稿
    700
  • win11事件查看器在哪里打开_win11事件查看器打开路径介绍

    win11事件查看器在哪里打开_win11事件查看器打开路径介绍win11事件查看器在哪里打开_win11事件查看器打开路径介绍win11事件查看器在哪里打开_win11事件查看器打开路径介绍win11事件查看器在哪里打开_win11事件查看器打开路径介绍

    答案:可通过五种方式打开Windows 11事件查看器。依次为:开始菜单搜索“事件查看器”或eventvwr;使用Win+R运行eventvwr.msc;右键“此电脑”进入计算机管理并选择事件查看器;按Win+X后选事件查看器;通过控制面板的管理工具双击启动。 如果您需要排查系统故障或查看计算机的运…

    2026年9月25日 • 用户投稿
    000
  • firefox浏览器怎么截图整个网页 Firefox浏览器滚动长截图功能使用教程

    firefox浏览器怎么截图整个网页 Firefox浏览器滚动长截图功能使用教程firefox浏览器怎么截图整个网页 Firefox浏览器滚动长截图功能使用教程firefox浏览器怎么截图整个网页 Firefox浏览器滚动长截图功能使用教程firefox浏览器怎么截图整个网页 Firefox浏览器滚动长截图功能使用教程

    Firefox可通过内置截图工具截取长网页,点击菜单选择“截图”或使用Ctrl+Shift+S,再点“截取整页”即可保存完整页面。 如果您在浏览网页时需要保存完整页面内容,但Firefox默认仅截取当前可见区域,则可以通过内置的截图工具扩展功能实现全页截图。以下是具体操作方法: 本文运行环境:Del…

    2026年9月25日 • 用户投稿
    000
  • win10怎么彻底关闭快速启动功能

    win10怎么彻底关闭快速启动功能win10怎么彻底关闭快速启动功能win10怎么彻底关闭快速启动功能win10怎么彻底关闭快速启动功能

    有的用户在完成win10系统的安装后,想要再次进入bios设置界面,却发现无法顺利进入。这是因为在win10中启用了全新的快速启动机制,导致开机时直接跳转至系统界面,而不会显示主板自检画面。因此,我们只需关闭该功能即可正常进入bios。 操作步骤: 方法一: 打开“开始菜单”,点击其中的“设置”图标…

    2026年9月25日 • 用户投稿
    200
  • sublime怎么设置字体和字号 _sublime字体与字号调整方法

    sublime怎么设置字体和字号 _sublime字体与字号调整方法sublime怎么设置字体和字号 _sublime字体与字号调整方法sublime怎么设置字体和字号 _sublime字体与字号调整方法sublime怎么设置字体和字号 _sublime字体与字号调整方法

    先修改用户设置文件以调整字体和字号,打开Preferences → Settings,在右侧User配置中添加”font_face”和”font_size”选项,如{“font_face”: “Fira Code&#…

    2026年9月25日 • 用户投稿
    000
  • Java 8 使用 Stream API 扁平化嵌套 Map 并提取首个元素

    Java 8 使用 Stream API 扁平化嵌套 Map 并提取首个元素Java 8 使用 Stream API 扁平化嵌套 Map 并提取首个元素Java 8 使用 Stream API 扁平化嵌套 Map 并提取首个元素Java 8 使用 Stream API 扁平化嵌套 Map 并提取首个元素

    本文将详细介绍如何使用 Java 8 的 Stream API 将一个嵌套的 Map 结构进行扁平化处理,并从中提取所需的数据。 具体来说,我们将把 Map<Integer, Map<String, List>> 转换为 Map,其中新 Map 的键是原内部 Map 的键,值…

    2026年9月25日 • 用户投稿
    1200
  • 惠普电脑如何进入安全模式

    惠普电脑如何进入安全模式惠普电脑如何进入安全模式惠普电脑如何进入安全模式惠普电脑如何进入安全模式

    在日常维护计算机时,我们有时需要进入安全模式来进行一些检查和修复工作,以解决系统出现的问题。不过,对于一些使用惠普电脑的用户来说,可能并不清楚如何让惠普电脑进入安全模式。接下来,小编将为大家介绍几种惠普电脑进入安全模式的方法,这里以windows 10为例。 方法一: 按下Windows徽标键+R,…

    2026年9月25日 • 用户投稿
    100
  • 首个对话式音乐创作 Agent“Tunee”正式公测

    首个对话式音乐创作 Agent“Tunee”正式公测首个对话式音乐创作 Agent“Tunee”正式公测首个对话式音乐创作 Agent“Tunee”正式公测首个对话式音乐创作 Agent“Tunee”正式公测

    趣丸科技旗下天谱乐团队自主研发的国内首款对话式音乐创作agent“tunee”近日正式启动全球公测,全面向公众开放使用。 据悉,用户只需通过自然语言描述自己的音乐设想,即便表达模糊,Tunee也能自动完成需求解析、方案设计到实际作曲的完整流程,最终输出契合用户意图的原创音乐作品。 Tunee采用先进…

    2026年9月25日 • 用户投稿
    500

发表回复

登录后才能评论
关注微信