基于Pygame(Python)的本地音乐播放器


并没有怎么学习过Python,所以程序看起来写的很杂乱。但是也能大体上完成我期望的功能,最后的结果也蛮让我满意的。另外,软件并没有经历各种的测试,有问题还请包涵。先看效果:
在这里插入图片描述

一、界面显示

在界面设计中使用的是Python的Tkinter模块,该模块python自带,无需自己安装,并且体积小,使用起来也十分方便。


if __name__ == "__main__":
    # 第1步,实例化object,建立窗口window
    window = tk.Tk()
    # 第2步,给窗口的可视化起名字
    window.title('My Music')
    # 第3步,设定窗口的大小(长 * 宽)
    window.geometry('500x150')  # 这里的乘是小x
    window1 = tk.Frame(window)  # 主窗口创建框架1
    window1.pack()
    window_one(window1)  # 框架1具体配置
    # 音乐名需要变化
    musicName = tk.StringVar()
    musicName.set("null")
    # 播放按键需要变化
    startText = tk.StringVar()
    startText.set("播放")
    # 进度需要变化
    jindu = tk.StringVar()
    jindu.set("00:00")
    # 播放模式设置
    mode = tk.StringVar()
    mode.set("顺序")
    window2 = tk.Frame(window) # 主窗口创建框架2
    window_two(window2)  # 框架2具体配置
    # 禁止用户调整窗口大小
    window.resizable(False, False)
    # 第6步,主窗口循环显示
    window.mainloop()
    # 注意,loop因为是循环的意思,window.mainloop就会让window不断的刷新,如果没有mainloop,就是一个静态的window,传入进去的值就不会有循环,mainloop就相当于一个很大的while循环,有个while,每点击一次就会更新一次,所以我们必须要有循环
    # 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。

接下来是对主窗口的框架1具体配置信息,框架1主要用于选择歌曲文件夹,选择文件夹后会框架1就会被销毁,继而打开框架2。

def window_one(window1):  # 加载音乐
    var = tk.StringVar()  # 将label标签的内容设置为字符类型,用var来接收hit_me函数的传出内容用以显示在标签上
    var.set('请选择音乐所在文件夹')
    # 第4步,在图形界面上设定标签
    l = tk.Label(window1, textvariable=var, font=('Arial', 12), width=500, height=2)
    # 说明: bg为背景,font为字体,width为长,height为高,这里的长和高是字符的长和高,比如height=2,就是标签有2个字符这么高
    # 第5步,放置标签
    l.pack(expand='True',pady='15')  # Label内容content区域放置位置,自动调节尺寸
    # 放置lable的方法有:1)l.pack(); 2)l.place();
    # 第5步,在窗口界面设置放置Button按键
    b = tk.Button(window1, text='选择文件夹', font=('Arial', 12), width=10, height=1, command=hit_me)
    b.pack(expand='True')

下图是框架1界面图:
在这里插入图片描述

框架2用于歌曲的播放:

def window_two(window2):
    global pro1
    musicLabel = tk.Label(window2, textvariable=musicName, font=('Arial', 12), width=500, height=2)
    musicLabel.pack(expand='True')

    # 进度条显示部分
    jinduLabel = tk.Label(window2, textvariable=jindu, font=('Arial', 10), width=10, height=2)
    pro1 = ttk.Progressbar(window2, length=450, cursor='spider', mode="determinate", orient=tk.HORIZONTAL)
    pro1.pack(padx='2')
    jinduLabel.pack()
	# 按键部分
    start = tk.Button(window2, textvariable=startText, font=('Arial', 12), width=12, height=1, command=Tostart)
    next = tk.Button(window2, text='下一曲', font=('Arial', 12), width=12, height=1, command=Tonext)
    last = tk.Button(window2, text='上一曲', font=('Arial', 12), width=12, height=1, command=Tobefore)
    setloop = tk.Button(window2, textvariable=mode, font=('Arial', 12), width=12, height=1, command=Toloop)

    start.pack(side='left',padx='1',expand
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值