Ползунок громкости в Tkinter с PyDub

Обычно со звуком вы можете получить доступ к громкости с помощью: звук.объем = 10 Однако с Pydub доступ к тому осуществляется с помощью: звук + 10 Проблема в том, что я не могу точно «установить» громкость, просто отрегулируйте громкость, на которой сейчас звучит песня. Я хотел бы создать ползунок Tkinter, который я могу варьировать между неслышимым и громким. Это то, что у меня есть до сих пор:

root = tk.Tk()
root.geometry("500x500")
song1 = AudioSegment.from_file("./song.mp3")

def current_value(event):
    song1 + slider.get()
    #song1.volume = event
    print(event)

slider = ttk.Scale(root, from_=-50, to=50, orient = "horizontal",command=current_value)
slider.place(rely=.5, relx=.5)

def play_music(song):
    play(song)

thread1 = threading.Thread(target=play_music, args=(song1,))
thread1.start()

root.mainloop()
#This mostly just lags the audio file
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
17
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

исправлено с помощью:

from pycaw.pycaw import AudioUtilities
class AudioController:
    def __init__(self, process_name):
        self.process_name = process_name
        self.volume = self.process_volume()

    def process_volume(self):
        sessions = AudioUtilities.GetAllSessions()
        for session in sessions:
            interface = session.SimpleAudioVolume
            if session.Process and session.Process.name() == self.process_name:
                #print("Volume:", interface.GetMasterVolume())  # debug
                return interface.GetMasterVolume()

    def set_volume(self, decibels):
        sessions = AudioUtilities.GetAllSessions()
        for session in sessions:
            interface = session.SimpleAudioVolume
            if session.Process and session.Process.name() == self.process_name:
                # only set volume in the range 0.0 to 1.0
                self.volume = min(1.0, max(0.0, decibels))
                interface.SetMasterVolume(self.volume, None)
                #print("Volume set to", self.volume)  # debug

def volume_slider_controller(event):
    audio_controller = AudioController("python.exe") #will need to be punge.exe
    audio_controller.set_volume(float(event))

Ваш ответ может быть улучшен с помощью дополнительной вспомогательной информации. Пожалуйста, редактировать, чтобы добавить дополнительную информацию, например цитаты или документацию, чтобы другие могли подтвердить правильность вашего ответа. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре.

Community 11.05.2022 15:51

Другие вопросы по теме