PyQT EqualizerBar: Визуализируйте изменения звуковой частоты
Этот настраиваемый PyQt5 / PySide2-совместимый виджет обеспечивает вывод визуализатора частоты для аудиоприложений. Он полностью настраивается от количества полосок, количества сегментов и цветов до анимированного затухания. Он готов к использованию в ваших приложениях Python-Qt5.
Пакет для загрузки включает демонстрационную анимацию с использованием случайных данных и некоторую настраиваемую цветовую конфигурацию, чтобы вы могли изучить, как работает виджет.
Базовая настройка
Чтобы создать объект Equalizer, укажите количество полосок и количество сегментов на полосу.
equalizer = Equalizer(5, 10)
Диапазон по умолчанию для каждой полосы эквалайзера составляет 0 ... 100. Это можно отрегулировать с помощью .setRange
.
equalizer.setRange(0, 1000)
Анимация распада
Полоса эквалайзера включает анимацию затухания, при которой пики значений медленно исчезают с течением времени. Это создается путем постепенного вычитания заданного значения из текущего значения каждого столбца с использованием повторяющегося таймера.
Частоту таймера спада (в миллисекундах) можно настроить с помощью .setDecayFrequencyMs
. Значение по умолчанию - 100 мс.
equalizer.setDecayFrequencyMs()
Передача 0 отключит механизм распада.
На каждом тике установленное значение удаляется из текущего значения каждого бара. Это настраивается с помощью .setDecay
. Отрегулируйте это в зависимости от диапазона возможных значений вашего эквалайзера.
equalizer.setDecay(0, 1000)
Конфигурация стиля бара
Количество отображаемых полосок и количество сегментов в полосах / цвет этих полос определяется при запуске.
equalizer = EqualizerBar(10, ["#2d004b", "#542788", "#8073ac", "#b2abd2", "#d8daeb", "#f7f7f7", "#fee0b6", "#fdb863", "#e08214", "#b35806", "#7f3b08"])
Чтобы установить цвета после запуска, либо укажите список цветов (QColor
или шестнадцатеричные значения) при запуске, либо используйте метод .setColors
. Передача списка цветов в этот метод изменит количество сегментов в соответствии с предоставленными цветами.
equalizer.setColors(["#810f7c", "#8856a7", "#8c96c6", "#b3cde3", "#edf8fb"])
Вы также можете использовать .setColor
для установки одного цвета для всех сегментов, не изменяя количество полосок.
equalizer.setColor('red')
Интервал вокруг изображения эквалайзера настроен с .setBarPadding
предоставлением целочисленного значения для добавления в пикселях.
equalizer.setBarPadding(20)
Пропорция каждого сегмента полосы, который является сплошным / пустым, настраивается с использованием значения .setBarSolidPercent
с плавающей запятой между 0 ... 1.