Python实现简易小钢琴
使用Python和内带的Tkinter库、winsound 模块实现的简单小钢琴。
Tkinter库和winsound模块不需要额外安装就可以使用,因为它们是Python的标准库之一,已经随着Python的安装包一起提供。标准库是Python官方提供的一组核心模块和工具,它们被视为Python语言的一部分,因此在安装Python解释器时就会自动包含这些标准库。
Tkinter库是Python的标准图形用户界面(GUI)工具包,它提供了创建和管理GUI应用程序所需的组件和功能。Tkinter基于Tcl/Tk工具包,是Python内置的库,因此无需额外安装。
winsound模块是Python的标准库之一,用于在Windows操作系统中播放声音。它提供了简单的接口,它提供了一些用于控制Windows系统声音的函数,比如播放声音、发出蜂鸣声等,可以用于播放系统提供的声音文件或者自定义的声音。
我对乐理了解几乎为零,相关音高(pitch)可以参考这里https://www.autopiano.cn/toolbox/pitch
以下是一个使用Python和内带的Tkinter库、winsound 模块实现的简单钢琴程序的源码:
import tkinter as tk
import winsound # 注意:winsound 模块只在 Windows 上可用# 定义一个播放声音的函数
def play_sound(frequency):winsound.Beep(frequency, 500) # 播放500毫秒的声音# 创建主窗口
root = tk.Tk()
root.title("The Little Piano")# 定义音符和对应的频率
notes = {'a': 261,'s': 294,'d': 329,'f': 349,'g': 392,'h': 440,'j': 494,'k': 523
}# 创建一个函数来生成钢琴键
def create_key(note):def on_click(e=None):play_sound(notes[note])# 按下键的视觉反馈button.config(relief=tk.SUNKEN)button.after(100, lambda: button.config(relief=tk.RAISED))button = tk.Button(root, text=note, width=5, height=5, command=on_click)button.pack(side=tk.LEFT, padx=5, pady=5)root.bind(note.lower(), on_click) # 绑定按键事件# 为每个音符创建一个钢琴键
for note in notes:create_key(note)# 启动Tkinter事件循环
root.mainloop()
运行效果如下:
你可以用英文状态下按下琴键上的字符,或用鼠标单击琴键试试了。