2014-11-21 2 views
0

Я пытаюсь использовать .get() для доступа к записи из моего Scale, но при перемещении слайдера громкость не изменяется. Я использую pygame миксер слишком кстати.Создание ползунка объема в tkinter

Релевантный код;

def change_vol(): 
    sounds.music.set_volume(vol.get()) 
######################################### 
def play_music(): 
    load_music() 
    sounds.music.play() 
    pass 
########################## 
def load_music(): 
    sounds.music.load("fakeplastic.wav") 


vol = Scale(
    sound_box, 
    from_ = 0, 
    to = 1, 
    orient = HORIZONTAL , 
    resolution = .1, 
) 
vol.grid(row = 3, column = 1) 

Если вы хотите, чтобы я опубликовал любые другие фрагменты, пожалуйста, спросите, спасибо.

ответ

2

Похоже, вы забыли назначить command опцию Scale «s к change_vol так, что функция вызывается каждый раз, когда вы регулируете масштаб:

vol = Scale(
    sound_box, 
    from_ = 0, 
    to = 1, 
    orient = HORIZONTAL , 
    resolution = .1, 
    #################### 
    command=change_vol 
    #################### 
) 

Вам также нужно пересмотреть change_vol принять событие объект, который будет послан к нему каждый раз, когда вы перемещаете масштаб:

def change_vol(_=None): 
    sounds.music.set_volume(vol.get()) 

_=None я сделал, чтобы понять, что вы не используете аргумент внутри т он функционирует.

+0

Добавление, которое дает ошибку; Исключение в Tkinter обратного вызова TraceBack (самый последний вызов последнего): Файл "/usr/lib/python3.4/tkinter/__init__.py", строка 1490, в __call__ возвратного self.func (* арг) TypeError: change_vol() принимает 0 позиционных аргументов, но 1 дано –

+0

@DamhanRichardson - Ах, объект события отправляется в 'change_vol'. См. Мое редактирование. – iCodez

+0

Ты лучший! не смог найти его нигде в Интернете. –

Смежные вопросы