2014-11-21 90 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

看起来你忘了Scalecommand选项分配给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让你不使用内t时的说法明确表示,他的功能。

+0

添加,给出错误;异常在Tkinter回调 回溯(最近呼叫最后): 文件“/usr/lib/python3.4/tkinter/__init__.py”,行1490,在__call__中 返回self.func(* args) TypeError:change_vol ()需要0个位置参数,但1个被给出了 – 2014-11-21 00:08:31

+0

@DamhanRichardson - 啊,一个事件对象被发送到'change_vol'。看我的编辑。 – iCodez 2014-11-21 00:10:17

+0

你是最棒的!无法在网上找到这个地方。 – 2014-11-21 00:12:28