使用Python打造屬於你的ikun音樂播放器,簡直不要太好用

来源:https://www.cnblogs.com/hahaa/archive/2023/07/07/17535458.html
-Advertisement-
Play Games

首先聲明,我不是小黑子,我不是小黑子! 作為一個ikun,時刻都在想著我們家姐姐! 這不上次用Python做了一個ikun飛機大戰,今天再給大家整活一手,Python tkinter開發一個專屬ikun音樂播放器,這樣就能時刻看到姐姐了。 咱們來看看效果 代碼實現 今天要做的就是上面的簡易音樂播放器 ...


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

作為一個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)
# 完整代碼都放在這個摳裙了:708525271
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我要搞點別的新東西去了 ,下次見!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 遇到的問題 在一個新項目中,設計統一了項目中所有的字體,並提供了字體包。在項目中需要按需引入這些字體包。 首先,字體包的使用分為了以下幾種情況: 無特殊要求的語言使用字體A,阿拉伯語言使用字體B; 加粗、中等、常規、偏細四種樣式,AB兩種 ...
  • 數字化轉型會帶來大量的研發需求,如何更好更快的交付這些需求成為一個突出問題,該怎麼打造一個平臺去解決該問題?能不能用第一性原理思維去推導出發展方向? ...
  • 只要將配置信息存放在與源代碼不同的存儲庫中,將其鎖好,僅對有權訪問的人開放,並且管理員能夠根據過程、程式和執行人等授予或撤銷對相關配置信息的訪問許可權,那麼配置信息也可以存放在版本控制系統中 ...
  • ### 構造器參數 - maxFrameLength:指定解碼器所能處理的數據包的最大長度,超過該長度則拋出 TooLongFrameException 異常; - lengthFieldOffset:指定長度欄位的起始位置; - lengthFieldLength:指定長度欄位的長度:目前支持1( ...
  • # 概述 NumPy是一個開源的科學計算庫,它提供了高效的數值計算和數組操作功能,主要包括: * 多維數組的創建、操作和索引。 * 數組的切片、拼接和轉置。 * 數組的乘法、除法、求導、積分、對數等基本運算。 * 數組的逐元素操作、求平均值、中位數、眾數等統計量。 * 數組作為列表、元組等數據類型進 ...
  • 在Mac OS上安裝vs code的java開發環境. 按照vs code的官方說明安裝Java相關插件, 遇見下列問題並解決了. 安裝JDK環境 安裝Extension Pack for Java 插件後,vscode會提示你安裝一個java,我安裝提示安裝了java.後來才發現安裝的是jre,並 ...
  • 相信閱讀過上期文章,動手能力強的朋友們已經自己跑出來界面了。所以這期我要講的是交互部分,也就是對於滑鼠點擊事件的響應,包括計時計數對點擊事件以及一些狀態量的影響。 回憶下第一期介紹的掃雷規則和操作,游戲從開局到結束可能會涉及到哪些情況呢?我認為比較重要的就是明確什麼情況下游戲已經結束,結束代表的是勝 ...
  • # python multiprocessing庫使用記錄 需求是想並行調用形式化分析工具proverif,同時發起對多個query的分析(378個)。實驗室有40核心80線程的伺服器(雙cpu,至強gold 5218R*2)。 觀察到單個命令在分析時記憶體占用不大,且只使用單核心執行,因此考慮同時調 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...