酷炫音乐盒: 使用Python和Tkinter打造自己的音乐播放器

news2024/10/7 4:36:04

前言

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

Tkinter是一个功能强大且简单易用的库,适合构建轻量级的GUI应用程序。它在不同的操作系统上具有相同的外观和行为,因此可以实现跨平台的应用程序。

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


代码实现

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

先导入需要用到的模块

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.coloradmin.cn/o/716411.html

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

相关文章

ROS学习——运行管理

ROS是多进程(节点)的分布式框架&#xff0c;一个完整的ROS系统实现&#xff1a; 可能包含多台主机&#xff1b; 每台主机上又有多个工作空间(workspace)&#xff1b; 每个的工作空间中又包含多个功能包(package)&#xff1b; 每个功能包又包含多个节点(Node)&#xff0c;不同的…

MyBatis—操作数据库

MyBatis &#x1f50e;前置铺垫创建数据库MyBatis 的执行流程创建对应流程 &#x1f50e;MyBatis—查询查询用户信息执行流程创建实体类创建 Interface 与 xml在 xml 中编写 SQL 语句模拟执行流程 &#x1f50e;单元测试定义优点执行单元测试引入依赖生成单元测试编写代码Asser…

优思学院|制造不良品是品质成本意识的问题吗?

制造的最大错误&#xff0c;就是制造出不良品或者不适合的物品。 谁都知道制造出这类“不良品”会使成本增加&#xff0c;但是到底会增加什么成本&#xff0c;可能就不是人人 都清楚。 若是不小心制造出不适合品&#xff0c;浪费的成本除了该物品的材料费、加工人力的费用、设…

VR电力安全警示教育:身临其境体验事故伤害

VR电力安全警示教育由广州华锐互动开发&#xff0c;是一种利用虚拟现实技术模拟电厂安全事故的应用程序。该应用程序通过模拟真实的场景和情境&#xff0c;让用户身临其境地体验VR电力安全警示教育的过程&#xff0c;从而提高用户的安全意识和应对能力。 在VR电力安全警示教育中…

Linux下获取另外一个程序的标准输出和标准错误输出的一种实现方式

问题&#xff1a;一个程序如何获取另外一个程序的标准输出和标准错误输出&#xff1f; 标准输入&#xff0c;标准输出&#xff0c;标准错误输出是一个程序的基本组成&#xff0c;在Linux下一个程序调用另外一个程序&#xff0c;如何获取其标准输出和错误输出呢&#xff1f; 分析…

专用开发工具和环境在嵌入式系统开发中的重要性

嵌入式系统是一种特殊类型的计算机系统&#xff0c;其设计和开发用于控制特定设备或执行特定任务。以下是嵌入式系统的一些特点以及与其开发相关的专用工具和环境&#xff1a; 特定目标&#xff1a;嵌入式系统通常被设计用于执行特定的任务或控制特定的设备。它们被定制以满足特…

开发一款财经直播系统需要注意的方面

数据保护与隐私&#xff1a;确保用户的个人信息和交易数据得到有效的保护&#xff0c;遵守相关的数据保护法规。采用高级加密技术来保护用户的敏感信息&#xff0c;并建立安全的存储和传输机制。 信息真实性&#xff1a;提供准确、可信的财经信息&#xff0c;确保平台上发布…

【Jenkins】Jenkins构建后端流水线

目录 一、新建任务1、输入任务名称&#xff0c;选择构建项目类型&#xff08;这里我选择的是Maven项目&#xff09;&#xff0c;任务名称一般格式为&#xff1a;项目名称-前后端2、创建成功后的结果 二、配置流水线1、进入刚创建好的任务页面中&#xff0c;点击配置2、General配…

Loki+Grafana监控docker容器日志

目标&#xff1a;最近开发人员时常需要查看各个环境项目中容器日志&#xff0c;而直接通过ssh终端使用docker logs命令查看日志不太安全&#xff0c;这会导致很多人员知道服务器的账户和密码&#xff0c;有没有一种可以收集所有容器日志的平台系统。那么这套系统就是LokiGrafan…

3.3C++输入流

C 输入概述 C输入是指程序从外部获取数据的过程。 C提供多种输入方法&#xff0c;包括从键盘输入、从文件读取、从网络获取&#xff0c;最常用的是从键盘输入。 C输入数据的函数是cin&#xff0c;它可以读取各种类型的数据&#xff0c;包括整数、浮点数、字符和字符串等。 …

7.1.8 其他Linux支持的文件系统与VFS

虽然 Linux 的标准文件系统是 ext2 &#xff0c;且还有增加了日志功能的 ext3/ext4 &#xff0c;事实上&#xff0c;Linux 还有支持很多文件系统格式的&#xff0c; 尤其是最近这几年推出了好几种速度很快的日志式文件系统&#xff0c;包括 SGI 的 XFS 文件系统&#xff0c; 可…

css文字超出元素省略,单行、多行省略

效果图: 通用CSS .box {width: 500px;border: 1px solid red;padding: 10px;line-height: 24px;}1.单行省略 .singe-line {text-overflow: ellipsis;overflow: hidden;word-break: break-all;white-space: nowrap;}<p>单行省略</p><div class"singe-lin…

如何统一接口测试的功能、自动化和性能测试用例

服务端的测试&#xff0c;大多数内容都围绕着接口展开。对于接口测试&#xff0c;无非也是功能、自动化、性能测试为主&#xff0c;偶然想到一个问题&#xff0c;如果能写一个用例&#xff0c;在功能、自动化、性能三者的测试场景中重复使用&#xff0c;肯定能省去非常多的时间…

webpack相关面试题

webpack面试题 1.webpack和vite区别2.如何优化webpack打包速度&#xff1f;3.说说webpack中常见的Plugin&#xff1f;解决了什么问题4.说说如何借助webpack来优化前端性能&#xff1f;如何优化JS代码压缩CSS代码压缩Html文件代码压缩文件大小压缩图片压缩Tree ShakingusedExpor…

中小企业的数字化热情,从未像今年618这样滚烫

一年一度的618大促告一段落&#xff0c;我们可以总结一个趋势&#xff1a;C端消费者对大促的热情在消退&#xff0c;而B端企业&#xff0c;尤其是中小企业&#xff0c;对大促的热情则以肉眼可见的速度提升。 普通消费者也好&#xff0c;广大中小企业也罢&#xff0c;参与大促的…

SSMP整合案例(11) 在界面中实现添加操作

上文 SSMP整合案例(10) vue端调整项目环境 发送请求 基本界面编写我们搭建了基本的页面结构 然后 我们来做个新增的功能 首先 新增 我们肯定是用户点击了这个新建之后 我们再来处理这个逻辑 我们之前的代码 新增是有绑定 一个事件的 但是这个 AddBook中并没有内容 首先 我们…

想要经营好抖音小店,你还需要了解这些活动方法

抖音小店作为抖音上的新零售业务形态&#xff0c;旨在为用户提供更加便捷的购物体验&#xff0c;同时也为商家提供了一个新的销售渠道。在使用抖音小店的过程中&#xff0c;有一些主流的玩法&#xff0c;今天不若与众科技就来介绍一下。 1. 抖音小店开通直播带货服务 开通直播…

PowerToys工具介绍及使用

目录 介绍下载使用和功能介绍1.安装后的效果2.始终置顶3.唤醒4.颜色选择器5.FancyZones 窗口分屏器6.File Locksmith7.文件资源管理器加载项8.Host文件编辑器9.图像大小调整器10.键盘管理器11.速览12.PowerRename13.文本提取器 介绍 PowerToys 是微软最初发布于 Windows 95 平…

计算机毕业论文选题推荐|软件工程|小程序系列选题

文章目录 导文题目导文 计算机毕业论文选题推荐|软件工程 (***语言)==使用其他任何编程语言 例如:基于(***语言)门窗账务管理系统的设计与实现 得到:基于JAVA门窗账务管理系统的设计与实现 基于vue门窗账务管理系统的设计与实现 等等 题目 基于微信小程序和深度学习的宠物…

Minio设置文件链接永久有效的完整步骤

目录 前言1.下载MinIO Client2.运行MinIO Client3.添加一个云存储服务4.验证5.policy命令 - 管理存储桶策略总结 前言 minio分享文件的链接&#xff0c;最多支持分享七天 通过 MinIO客户端 管理存储桶策略的方式实现文件链接永久有效 1.下载MinIO Client 采用 Docker 方式 …