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

酷炫音乐盒: python打造自己的音乐播放器

目录标题

      • 前言
      • 代码实现
      • 尾语

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

Python的Tkinter(Tk接口)是一个用于创建图形用户界面(GUI)的标准库。

它是Python的内置模块,无需额外安装即可使用。Tkinter提供了一组部件(如按钮、标签、文本框等)和布局管理器,使开发GUI应用程序变得简单和便捷。

Tkinter是一个功能强大且简单易用的库,适合构建轻量级的GUI应用程序。

它在不同的操作系统上具有相同的外观和行为,因此可以实现跨平台的应用程序。

下面的一些程序展示就是用tkinter做的

python资料、源码、教程\福利皆: 点击此处跳转文末名片获取

代码实现

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

先导入需要用到的模块

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)

Tkinter是一个功能强大且简单易用的库,适合构建轻量级的GUI应用程序。

它在不同的操作系统上具有相同的外观和行为,因此可以实现跨平台的应用程序。

当然,Tkinter还有更多的功能和细节,通过阅读官方文档和教程,你可以更深入地了解和学习如何运用Tkinter来创建各种GUI应用程序。

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇


http://www.kler.cn/a/37579.html

相关文章:

  • 面试题之MySQL事物的特性
  • Redis数据类型 — String
  • Scala集合 - 不可变数组
  • Mac上提取应用APP的LOGO
  • Java二叉树
  • 数字 IC 设计职位经典笔/面试题(二)
  • mac批量提取文件夹的名称,怎么操作?
  • 043、TiDB特性_缓存表和分区表
  • 【云原生|Kubernetes】13-Deployment资源控制器详解
  • mysql数据库的定时备份脚本(docker环境和非docker环境)
  • K8s 为什么要弃用 Docker
  • 若依添加router-view,使用详细(若依后台管理系统添加router-view)
  • MySQL 参考文档:SQL 语句优化(SELECT 语句优化)之索引条件下推(索引下推)优化
  • windows搭建git服务器 无法识别 ‘git‘ 命令:exec: “git“: executable file not found in %PATH%
  • Spring 定时任务@Scheduled 注解中的 Cron 表达式
  • 7.kafka+ELK连接
  • 云原生之深入解析K8S的请求和限制
  • PDF转成PNG,之后PNG转成PDF
  • Linux学习之环境变量
  • Qt6 C++ 实现按住窗口拖拽移动