用代码书写浪漫,网友直呼“太美了”!

部署运行你感兴趣的模型镜像

刷短视频的时候,无意看到了一个很有意思的代码,于是本地复刻了一版升级版,分享给你。

先看效果:

20251031-155640

视频演示

https://www.bilibili.com/video/BV1Rb1KBdEmm

实现代码

代码分享(Python 写的):

/* by 01130.hk - online tools website : 01130.hk/zh/urlcode.html */
import tkinter as tk
import random

# 弹窗计数器(初始为0)
window_count = 0
# 存储所有弹窗的列表
windows_list = []
# 最大弹窗数量
MAX_WINDOWS = 300


def create_warm_tip():
    global window_count  # 声明使用全局计数器
    # 创建弹窗(关联主窗口 root)
    window = tk.Toplevel(root)

    # 获取屏幕宽高
    screen_width = root.winfo_screenwidth()
    screen_height = root.winfo_screenheight()

    # 随机窗口位置(确保完全显示)
    window_width = 250
    window_height = 60
    x = random.randrange(0, screen_width - window_width)
    y = random.randrange(0, screen_height - window_height)

    # 设置窗口标题、大小和位置
    window.title('温馨提示')
    window.geometry(f"{window_width}x{window_height}+{x}+{y}")

    # 随机提示文字
    tips = [
        '多喝水哦~', '保持微笑呀', '每天都要元气满满',
        '记得吃水果', '保持好心情', '好好爱自己', '我想你了',
        '梦想成真', '期待下一次见面', '金榜题名',
        '顺顺利利', '早点休息', '愿所有烦恼都消失',
        '别熬夜', '今天过得开心嘛', '天冷了,多穿衣服'
    ]
    tip = random.choice(tips)

    # 随机背景颜色
    bg_colors = [
        'lightpink', 'skyblue', 'lightgreen', 'lavender',
        'lightyellow', 'plum', 'coral', 'bisque', 'aquamarine',
        'mistyrose', 'honeydew', 'lavenderblush', 'oldlace'
    ]
    bg = random.choice(bg_colors)

    # 创建标签显示文字
    tk.Label(
        window,
        text=tip,
        bg=bg,
        font=('微软雅黑', 16),
        width=30,
        height=3
    ).pack()

    # 窗口置顶(新弹窗会显示在最上层)
    window.attributes('-topmost', True)

    # 将弹窗添加到列表
    windows_list.append(window)
    # 弹窗数量+1
    window_count += 1


def auto_pop_tips(interval=200):  # 间隔时间(毫秒),0.3秒=300毫秒
    # 只有当弹窗数量小于300时,才继续创建
    if window_count < MAX_WINDOWS:
        create_warm_tip()  # 创建一个弹窗
        # 继续定时递归调用(实现循环弹窗)
        root.after(interval, auto_pop_tips, interval)
    else:
        # 达到300个弹窗后,打印提示并开始关闭弹窗
        print(f"已达到最大弹窗数量({MAX_WINDOWS}个),开始逐个关闭")
        # 延迟1秒后开始逐个关闭弹窗
        root.after(1000, close_windows_one_by_one)


def close_windows_one_by_one(interval=100):  # 关闭间隔时间(毫秒)
    if windows_list:
        # 取出并关闭最后一个弹窗
        window = windows_list.pop()
        window.destroy()
        print(f"剩余弹窗数量: {len(windows_list)}")

        # 继续关闭下一个弹窗
        if windows_list:
            root.after(interval, close_windows_one_by_one, interval)
        else:
            print("所有弹窗已关闭")
            # 所有弹窗关闭后,也关闭主窗口
            root.after(1000, root.destroy)
    else:
        print("所有弹窗已关闭")
        # 所有弹窗关闭后,也关闭主窗口
        root.after(1000, root.destroy)


# 创建主窗口(隐藏,作为所有弹窗的父窗口)
root = tk.Tk()
root.withdraw()  # 隐藏主窗口

# 启动定时弹窗(间隔0.3秒)
auto_pop_tips(200)

# 启动主循环
root.mainloop()

小结

枯燥的生活需要一点小浪漫,哪怕只是转瞬即逝的弹窗。愿你所爱皆如愿,愿你前行皆坦途。

本文已收录到我的技术小站 www.javacn.site,其中包含的内容有:Spring AI、Spring AI Alibaba、LangChain4j、Dify、Coze、N8N、智能体(AI Agent)、MCP、Function Call、RAG、向量数据库、Prompt、多模态、向量数据库、嵌入模型、AI 常见面试问题等内容。

关注下面二维码,订阅更多精彩内容。
微信打赏
关注公众号(加好友):


作者: 王磊的博客
出处: http://vipstone.cnblogs.com/

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

本文旨在系统阐述利用MATLAB平台执行多模态语音分离任务的方法,重点围绕LRS3数据集的数据生成流程展开。LRS3(长时RGB+音频语音数据集)作为一个规模庞大的视频与音频集合,整合了丰富的视觉与听觉信息,适用于语音识别、语音分离及情感分析等多种研究场景。MATLAB凭借其高效的数值计算能力与完备的编程环境,成为处理此类多模态任务的适宜工具。 多模态语音分离的核心在于综合利用视觉与听觉等多种输入信息来解析语音信号。具体而言,该任务的目标是从混合音频中分离出不同说话人的声音,并借助视频中的唇部运动信息作为辅助线索。LRS3数据集包含大量同步的视频与音频片段,提供RGB视频、单声道音频及对应的文本转录,为多模态语音处理算法的开发与评估提供了重要平台。其高质量与大容量使其成为该领域的关键资源。 在相关资源包中,主要包含以下两部分内容: 1. 说明文档:该文件详细阐述了项目的整体结构、代码运行方式、预期结果以及可能遇到的问题与解决方案。在进行数据处理或模型训练前,仔细阅读此文档对正确理解与操作代码至关重要。 2. 专用于语音分离任务的LRS3数据集版本:解压后可获得原始的视频、音频及转录文件,这些数据将由MATLAB脚本读取并用于生成后续训练与测试所需的数据。 基于MATLAB的多模态语音分离通常遵循以下步骤: 1. 数据预处理:从LRS3数据集中提取每段视频的音频特征与视觉特征。音频特征可包括梅尔频率倒谱系数、感知线性预测系数等;视觉特征则涉及唇部运动的检测与关键点定位。 2. 特征融合:将提取的音频特征与视觉特征相结合,构建多模态表示。融合方式可采用简单拼接、加权融合或基于深度学习模型的复杂方法。 3. 模型构建:设计并实现用于语音分离的模型。传统方法可采用自适应滤波器或矩阵分解,而深度学习方法如U-Net、Transformer等在多模态学习中表现优异。 4. 训练与优化:使用预处理后的数据对模型进行训练,并通过交叉验证与超参数调整来优化模型性能。 5. 评估与应用:采用信号失真比、信号干扰比及信号伪影比等标准指标评估模型性能。若结果满足要求,该模型可进一步应用于实际语音分离任务。 借助MATLAB强大的矩阵运算功能与信号处理工具箱,上述步骤得以有效实施。需注意的是,多模态任务常需大量计算资源,处理大规模数据集时可能需要对代码进行优化或借助GPU加速。所提供的MATLAB脚本为多模态语音分离研究奠定了基础,通过深入理解与运用这些脚本,研究者可更扎实地掌握语音分离的原理,从而提升其在实用场景中的性能表现。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
要让STM32控制蜂鸣器发出“鸡你太美”音效,本质上是控制蜂鸣器按照特定的频率和时长发出不同的音调,组合成对应的旋律。以下是一个基本的示例代码,需要注意的是,由于“鸡你太美”并没有标准统一的精确旋律,这里只是一个简单示意,实际应用中可能需要根据更准确的乐谱来调整。 ### 硬件连接 假设蜂鸣器连接到STM32的某个GPIO引脚,例如PA0。 ### 代码实现 ```c #include "stm32f10x.h" // 定义音符频率(Hz) #define NOTE_C4 262 #define NOTE_D4 294 #define NOTE_E4 330 #define NOTE_F4 349 #define NOTE_G4 392 #define NOTE_A4 440 #define NOTE_B4 494 // 延时函数 void delay_ms(uint32_t ms) { for (uint32_t i = 0; i < ms * 1000; i++); } // 初始化蜂鸣器GPIO void Buzzer_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); } // 发出指定频率的音符 void play_note(uint16_t frequency, uint32_t duration) { uint32_t period = 1000000 / frequency; // 周期(us) uint32_t half_period = period / 2; for (uint32_t i = 0; i < duration * 1000 / period; i++) { GPIO_SetBits(GPIOA, GPIO_Pin_0); delay_ms(half_period / 1000); GPIO_ResetBits(GPIOA, GPIO_Pin_0); delay_ms(half_period / 1000); } } // 主函数 int main(void) { Buzzer_Init(); // 这里简单模拟“鸡你太美”的旋律,实际需要根据准确乐谱调整 play_note(NOTE_C4, 200); play_note(NOTE_D4, 200); play_note(NOTE_E4, 200); play_note(NOTE_F4, 200); while (1) { // 主循环可以留空 } } ``` ### 代码解释 1. **音符频率定义**:定义了一些基本音符的频率,在实际应用中可以根据需要添加更多音符。 2. **延时函数**:简单的延时函数,用于控制音符的时长。 3. **蜂鸣器GPIO初始化**:将蜂鸣器连接的GPIO引脚初始化为推挽输出模式。 4. **发出指定频率的音符**:根据传入的频率和时长,控制蜂鸣器发出对应音调。 5. **主函数**:初始化蜂鸣器,然后按照简单的旋律依次播放音符。 ### 注意事项 - 该示例代码只是一个简单的示意,实际的“鸡你太美”旋律需要根据准确的乐谱来调整音符和时长。 - 延时函数的精度可能不高,在对旋律精度要求较高的场景下,可以使用定时器来实现更精确的延时。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值