проблема с ткинтером после, мс увеличивается экспоненциально - PullRequest
0 голосов
/ 14 декабря 2018

Мы делаем семестровый проект в университете, и мы столкнулись со следующей проблемой:

Используя pygame,

Сначала мы играем один звук в правом ухе, а затем влевое ухо.Когда звук начинает воспроизводиться, он зацикливается на 10 петлях на заднем плане.Затем он вызовет функцию increase_volume, которая заканчивается на tkinter.after(500, increase_volume).

Наша проблема в том, что нам нужно воспроизвести 12 звуков.По первому звуку работает отлично.

Но когда мы останавливаем первый звук и запускаем второй, очень быстро становится ясно, что функция increase_volume больше не вызывается каждые 500 мс, а намного быстрее.Этот вызов становится все быстрее и быстрее для каждого звука.Это выглядит почти как экспоненциально.Для программы крайне важно, чтобы она увеличивалась только каждые 500 мс.Но мы не можем найти решение для этого.

Есть предложения?

def increase_volume(self):
    volume = pygame.mixer.music.get_volume()
    print (volume)
    print (datetime.now().time())
    if volume < 1.0:
        new_volume = volume + 0.01
        pygame.mixer.music.set_volume(new_volume)
        self.after(500, self.increase_volume)


def play_right_ear(self):
    volume = 0.0
    pygame.mixer.music.load("../Frekvensafspiller/justerede_lydfiler/" + str(self.frequency) + "Hz_R.mp3")

    pygame.mixer.music.set_volume(volume)
    pygame.mixer.music.play(10)
    self.increase_volume()

def play_left_ear(self):
    volume = 0.0
    pygame.mixer.music.load("../Frekvensafspiller/justerede_lydfiler/" + str(self.frequency) + "Hz_L.mp3")

    pygame.mixer.music.set_volume(volume)
    pygame.mixer.music.play(10)

    if self.frequency <= 8000:
        self.frequency = self.frequency * 2

    self.increase_volume()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...