ikun猛戳进来丨使用Python打造属于你的ikun音乐播放器,简直不要太好用

news2024/11/15 11:07:39

首先声明,我不是小黑子,我不是小黑子!

作为一个ikun,时刻都在想着我们家姐姐!

这不上次用Python做了一个ikun飞机大战,今天再给大家整活一手,Python tkinter开发一个专属ikun音乐播放器,这样就能时刻看到姐姐了。

咱们来看看效果

完整代码都放在文末名片了,自取即可



代码实现

今天要做的就是上面的简易音乐播放器

先导入需要用到的模块

import tkinter as tk
from pygame import mixer
import os

os模块是自带的,另外的两个都需要安装

做一个大小合适的窗口

root = tk.Tk()
root.title('音乐播放器')
root.geometry('440x570+200+200')

root.mainloop()

这样就可以得到一个大小合适的窗口,然后再上个底色和图标

root.iconbitmap('music.ico')
root['background'] = '#6175d6'

img = tk.PhotoImage(file='img\\封面.png')
tk.Label(root, image=img, bg='#6175d6').pack()

功能按键

frame_1 = tk.Frame(bg='#6175d6')
frame_1.pack(pady=10)
tk.Button(frame_1, text='上一首', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat').pack(
    side=tk.LEFT)
tk.Button(frame_1, text='播放', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat').pack(
    side=tk.LEFT, padx=40)
tk.Button(frame_1, text='下一首', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat', command=next).pack(
    side=tk.LEFT)

frame_2 = tk.Frame(bg='#6175d6')
frame_2.pack(pady=10)
tk.Button(frame_2, text='音量↑', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat'
          ).pack(side=tk.LEFT)
tk.Button(frame_2, text='暂停', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat').pack(
    side=tk.LEFT, padx=20)
tk.Button(frame_2, text='继续', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat').pack(
    side=tk.LEFT, padx=20)
tk.Button(frame_2, text='音量↓', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat'
          ).pack(side=tk.LEFT)

读取音乐

完善方向是加上排序功能,music是音乐文件夹 os.listdir 打开指定文件夹获取文件夹下所有文件名称

def music_list(): 
    lists = []  
    for i in os.listdir('music'):
        if os.path.splitext(i)[-1] == '.mp3':
            lists.append(i)
        else:
            pass
    return lists


def name_now():  # 当前播放音乐名称
    name1 = music_list()[num]
    song_name = name1.split(' - ')[-1][:-4]
    singer = name1.split(' - ')[0]
    return name1, song_name, singer


def play():
    mixer.init()
    size = 0.5
    name, song_name, singer = name_now()
    mixer.music.set_volume(size)
    mixer.music.load(f'music/{name}')
    mixer.music.play()

按键功能

音乐暂停/取消暂停

def stop(): 
    mixer.music.pause()

def cancel(): 
    mixer.music.unpause()

切换音乐上一首

def last():  
    global num
    mixer.init()
    mixer.music.stop()
    if 0 <= num <= len(music_list()) - 2:
        num += 1
    elif num >= len(music_list()) - 1:
        num = 0
    name1, song_name, singer = name_now()
    song_name_va.set(f'{song_name}')
    singer_va.set(f'{singer}')
    play()

切换音乐下一首

def next(): 
    global num
    mixer.init()
    mixer.music.stop()
    if 0 < num <= len(music_list()) - 1:
        num -= 1
    elif num <= 0:
        num = len(music_list()) - 1
    name1, song_name, singer = name_now()
    song_name_va.set(f'{song_name}')
    singer_va.set(f'{singer}')
    play()  # place(x=20, y=550)

控制音乐音量增大

def soundsize_up(): 
    global size
    if -0.1 < size < 1:
        size += 0.1
        # print(size)  # 验证音量
        mixer.music.set_volume(size)
    else:
        size += 0
        # print(size)
        mixer.music.set_volume(size)

控制音乐音量降低

def soundsize_down(): 
    global size
    if 0 < size < 1.1:
        size -= 0.1
        # print(size)
        mixer.music.set_volume(size)
    else:
        size -= 0
        # print(size)
        mixer.music.set_volume(size)

完整效果展示

好了,今天的分享就到这里了,ikun我要搞点别的新东西去了 ,下次见!

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

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

相关文章

CVPR 2023 | 掩码图像建模MIM的理解、局限与扩展

编者按&#xff1a;掩码图像建模&#xff08;Masked Image Modeling, MIM&#xff09;的提出&#xff0c;为计算机视觉模型训练引入无监督学习做出了重要贡献。得益于 MIM 的预训练算法&#xff0c;计算机视觉领域在近年来持续输出着优质的研究成果。然而整个业界对 MIM 机制的…

【Java从入门到大牛】程序流程控制

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;Java从入门到大牛 &#x1f320; 首发时间&#xff1a;2023年7月7日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f43e…

STM32CubeMX实现USB虚拟串口环回测试功能

STM32CubeMX实现USB虚拟串口环回测试功能 &#x1f4cd;参考ST官方给出的参考案例&#xff1a;https://www.stmcu.com.cn/Designresource/detail/LAT/711466&#x1f388;同功能配置可以参考《STM32 USB使用记录&#xff1a;使用CDC类虚拟串口&#xff08;VCP&#xff09;进行通…

MySQL系统函数

系统函数&#xff1a; 数学函数 1、abs() pi() 2、sqrt() 3、cell() floor() round() truncate() cell是向上取整&#xff0c;floor是向下取整。 注意&#xff1a;round负数和java里面的四舍五入有所不同 Round还可以指明位数 turncate是截断 4、power() …

颜色分类 (力扣)JAVA

给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sort 函数的情况下解决这…

用牛鲨NFT赚取SUI的机会,这不就来了?

很高兴向大家宣布Mysten Labs的Bullshark Quests活动&#xff0c;这是一个为Bullshark持有者提供赚取SUI奖励&#xff08;和其他福利&#xff09;的全新方式&#xff0c;Bullshark是ACES计划的一部分。Bullshark Quests将成为一个持续的活动&#xff0c;为Bullshark持有者提供通…

为什么需要多语言并行机器翻译?

随着全球化的加速和不同语言之间的交流需求不断增长&#xff0c;多语言机器翻译&#xff08;Multilingual Parallel Machine Translation&#xff09;成为一个备受关注的领域。传统上&#xff0c;机器翻译系统主要集中于一对特定语言之间的翻译&#xff0c;但这种单一语言对的模…

微服务的划分姿势分享

微服务是一种理念&#xff0c;没有确切的定义和边界&#xff0c;好比设计原则&#xff0c;是属于抽象的概念。在定义不明确的情况下谈划分也是一种各说各话&#xff0c;具体问题需要具体分析。 微服务的划分矛盾在于粒度&#xff0c;如果粒度太大了&#xff0c;分和不分似乎都差…

npm 记录

转 请看原文&#xff0c;我只是怕原文没了&#xff0c;复制了一遍。我目的是想记录缓存那一块。 前端工程化 - 剖析npm的包管理机制 - 掘金 在content-v2/sha512 执行 grep -n "https://registry.npmjs.org/base64-js/-/base64-js-1.0.1.tgz" -r ./ 获取缓存包…

Java 定义返回一个不能被修改、删除元素的List

为啥突然分享下这个&#xff0c;也是从mybatis源码看到了&#xff0c;所以想分享下&#xff1a; org.apache.ibatis.plugin.InterceptorChain 使用 Collections.unmodifiableList(); 示例&#xff1a; public static void main(String[] args) {List<String> canNotEdit…

Android 曲线覆盖图

看图 样例代码 layout.xml <com.XXXXX.utils.GraphBendLineandroid:id"id/ghost_view"android:layout_width"200dp"android:layout_height"200dp"android:layout_margin"40dp"app:node_bar_line_color"#F9FEFD"app:nod…

药物设计学笔记:基础篇

笔记来自《药物设计学》 文章目录 1.药物设计的分子基础2.药物设计的理论基础 1.药物设计的分子基础 化学小分子药物与生物大分子靶标之间相互作用是药物设计的分子基础临床所用的药物50%都属于手性化合物&#xff0c;这是因为药物靶标的基本单元如氨基酸或核苷酸都是手性结构…

快来收藏这几款免费的图标设计软件!

图标素材为网站、应用程序、文档等提供简洁明了的标识&#xff0c;尽管AdobeIllustrator等付费图标设计软件功能强大&#xff0c;但是对于一些轻量级的设计要求&#xff0c;使用免费的图标设计软件是个不错的选择。本文将向大家介绍5款免费的图标设计软件&#xff0c;一起来看看…

【自我提升】Yolov5使用云端GPU训练模型(谷歌免费版和AutoDL收费版对比)

写在前面&#xff1a;继我前几篇Yolov5系列的博客后&#xff0c;来填一个云端训练数据的坑。我公司电脑只能使用CPU训练模型&#xff0c;很拉跨。我自己的笔记本虽然支持GPU&#xff0c;但是运行起来很卡&#xff0c;而且稍微设置设置大一点轮数和批次&#xff0c;就会报当前磁…

CentOS7 主机网卡怎么配置端口聚合

环境&#xff1a; CentOS7 CentOS Linux release 7.7.1908 (Core) 网卡1&#xff1a;瑞昱普通千兆板载网卡 网卡2&#xff1a;EB-LINK intel 82599芯片PCI-E X8 10G 光模块千兆单模1310X1 问题描述&#xff1a; CentOS7 主机网卡怎么配置端口聚合 配置网卡聚合链路的作…

揭秘验证码,你可能不知道的那些事儿

在现代网络世界中&#xff0c;我们经常遇到验证码这个概念。它是一种用于验证使用者身份或防止恶意行为的安全机制。然而&#xff0c;除了表面上的使用和功能&#xff0c;验证码还有许多有趣而不为人所知的方面。本文将带你揭秘验证码背后的秘密&#xff0c;探索你可能不知道的…

Ctfshow web入门 nodejs篇 web334-web344

CTFshow NodeJs web334 前言&#xff1a;做原型链污染&#xff0c;入门的话个人建议先看看P神的文章&#xff0c;只看前四部分就行了。 深入理解 JavaScript Prototype 污染攻击 | 离别歌 (leavesongs.com) 然后也得有一点js基础&#xff0c;不用太多&#xff0c;要不然看起…

浅谈电力监控系统在地铁运维中的应用

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;随着我国工业化进程的不断推进&#xff0c;我国监控系统也实现了长足的发展。以往传统的地铁监控模式已经无法满足当前需求&#xff0c;将电力监控系统和地铁综合监控系统已经进行资源整合&#xff0c;有效…

产品需求还原度低应该怎么办?

在实际开发过程中&#xff0c;产品设计的完整性较难保障和实现&#xff0c;产品需求还原度较低&#xff0c;前后端对产品设计理解不深入&#xff0c;可能会随意修改产品需求。从而造成后期需求设计不完整&#xff0c;产品风险增大等问题。 为了解决这一问题&#xff0c;我们可以…

【Linux进阶之路】gcc/g++、Makefile、git

前言 在正式开始之前我们先补充一个知识点——普通用户提权的操作。 sudo 【指令】那如何将tmp1添加到信任白名单——sudoers文件 中呢&#xff1f; 肯定不能自己加&#xff0c;得超级管理员root加——第一步&#xff1a;切到超级用户。 找到sudoers文件——/etc/sudoers …