Я работаю над кодом, который должен быть генератором случайных шумов и имеет 3 основные функции - бесконечное воспроизведение, остановка и выход. Проблема начинается, когда дело доходит до воспроизведения следующего звука. Я пытался использовать pygame.mixer.music.queue()
, но, похоже, это не сработало. С использованием pygame.mixer.music.set_endevent()
после нажатия «PLAY» я не смог использовать другие функции. Теперь мой код выглядит следующим образом: он правильно воспроизводит следующий шум, но проблема в том, что нажатие кнопки «STOP» не останавливает его воспроизведение, а начинает воспроизводить другой шум. Можете ли вы помочь мне исправить это?
import os
import pygame
from tkinter import *
import random
import sys
playlista = []
pygame.init()
def start_noise(event):
directory = "C:/Users/directory/with/noises"
os.chdir(directory)
for files in os.listdir(directory):
if files.endswith(".ogg"):
playlista.append(files)
pygame.mixer.init()
next_noise = random.choice(playlista)
pygame.mixer.music.load(next_noise)
pygame.mixer.music.play()
different_noise()
def different_noise():
pos = pygame.mixer.music.get_pos()
if int(pos) == -1:
next_noise2 = random.choice(playlista)
pygame.mixer.music.load(next_noise2)
pygame.mixer.music.play()
root.after(1, different_noise)
def stop_noise(event):
pygame.mixer.music.stop()
def exit_noise(event):
sys.exit()
root = Tk()
playbutton = Button(root,text = "PLAY")
playbutton.pack()
stopbutton = Button(root,text = "STOP")
stopbutton.pack()
exitbutton = Button(root, text="EXIT")
exitbutton.pack()
playbutton.bind("<Button-1>",start_noise)
stopbutton.bind("<Button-1>",stop_noise)
exitbutton.bind("<Button-1>",exit_noise)
root.minsize(200,80)
root.mainloop()