python - tkinter 窗口在播放歌曲时冻结
问题描述
我最近开始制作 GUI 应用程序,我想做一个简单的音乐播放器。我正在使用 pygame 库来播放歌曲,效果很好。问题是播放歌曲时窗口冻结,我无法按任何按钮。谁能指出我正确的方向?我搜索了很多,一无所获。这是代码:
import tkinter.filedialog as filedialog
from tkinter import *
import os
import pygame
def play(position):
pygame.mixer.music.load(listOfSongs[position])
global index
index += 1
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
pygame.time.Clock().tick(5)
def next(event):
global index
index += 1
play(index)
root = Tk()
listOfSongs = []
directory = filedialog.askdirectory()
print("Loading files from directory: ", directory)
os.chdir(directory)
pygame.mixer.init()
for file in os.listdir(directory):
if file.endswith('.mp3'):
print("Appending file: ", file)
listOfSongs.append(file)
index = 0
play(index)
b = Button(root, text="Next", bg='red', width=5)
b.bind("<Button-1>", next)
b.pack()
root.mainloop()
解决方案
推荐阅读
- android - 如何在 Kotlin 中创建 View 类对象?什么是属性集?如何为视图创建它?
- google-apps-script - 广告脚本 (*.gs) 缺少应用程序脚本 getRange(int, int, int, int) 方法?
- python - 如何在 python 中将 MySQL blob 图像转换为 base64 字符串?
- javascript - 通过 for 循环中的函数调用时,Google 地图无法正确呈现
- java - 登录后可以存储和使用@AuthenticatedPrincipal
- python - 无法在 AWS 上的 lambda 函数中运行 pytest 命令
- jquery - 刷新类中的所有 div
- c# - AspectFill 在最初加载图像时适用于 Xamarin Mac 中的 CachedImage 渲染器,但在更新值时不起作用
- r - 根据价值计数计算中位数
- java - How to add click/long click listener to ViewPager2