2016-08-24 62 views
1

我是编码新手,我正在尝试为学校项目创建一个音乐盒,但我努力创建一个可以编辑音量的滑块。我只是不确定在移动滑块时从哪里开始实际改变音量。 我正在使用VLC库。使用Tkinter的音量滑块

import vlc 
import random 
from tkinter import * 
import threading 



song = "" 
instance = vlc.Instance() 

def get_songs(): 
    global song 
    global x 
    global songs 
    songs = filedialog.askopenfilenames() 
    x = 0 
    song = songs[x] 
    print(songs) 
    commence(song) 

def pause_resume(): 
    player.pause() 

def commence(song): 
    global player 
    global x 
    player = instance.media_player_new() 
    media = instance.media_new(song) 
    player.set_media(media) 
    player.play() 


def next_song(): 
    if x >= len(songs): 
     print("Error: Can't go any further") 
     x = 0 
     return 
    player.stop() 
    song = songs[x] 
    commence(song) 







window = Tk() 

window.geometry("600x600") 
window.title('JukeBox') 

#pause_button = Button(window, text = "Next", command = next_song) 
#pause_button.grid(row=1, column = 2) 
Button(window, text="Start", command=get_songs).grid(column=1,row=1) 
Button(window, text="Next", command=next_song).grid(column=1,row=2) 
pause_button = Button(window, text = "Pause/Resume", command = pause_resume) 
pause_button.grid(row=3, column = 1) 
menubar = Menu(window) 
filemenu = Menu(menubar, tearoff=0) 
filemenu.add_separator() 
filemenu.add_command(label="Open", command=get_songs()) 
filemenu.add_command(label="Exit", command=window.destroy) 
menubar.add_cascade(label="File", menu=filemenu) 
window.config(menu=menubar) 
vol = Scale(window,from_ = 0,to = 1,orient = HORIZONTAL ,resolution = .1,) 
vol.grid(row = 1, column = 2) 




window.mainloop() 

我知道我没有使用最好的编码实践,但是这样我才能真正理解我写的东西。

+0

嗯。也许[this](http://www.python-course.eu/tkinter_sliders.php)可能会有所帮助。 – Harrison

+0

是的,这有助于我更好地理解滑块,但我更担心如何在滑动时更改音量? –

+0

也许'command'选项是你需要的吗?这里有一个简单的例子(你可以在移动滑块时获得比例值):http://pastebin.com/S292a2VL –

回答

0

设置创建Scale小部件时command参数:

def set_volume(v): 
    global vol 
    global player 
    # either get the new volume from given argument v (type: str): 
    # value = int(v) 
    # or get it directly from Scale widget (type: int) 
    value = vol.get() 
    player.audio_set_volume(value) 

vol = Scale(..., command=set_volume) 
+0

我试过了,它说我有一个参数,它需要为零。 I = vol.get() player.audio_set_volume(ⅰ) 体积=量表(窗口,from_ = 0,=:我用一个按钮来更新体积 DEF show_value()半解决了问题100,orient = HORIZONTAL,resolution = 1) vol.gbut(row = 1,column = 2) vol_but = Button(window,text ='Update Volume',command = show_value) vol_but.grid(row = 2,列= 2) –

+0

@jordanCopezor答案更新。 – acw1668

0

我的队友能够通过简单的功能,不知道为什么它可以帮助和感谢大家的要求PARAMATERS增加自我帮助我为了尝试,非常感谢。

def show_value(self): 
    global player 
    i = vol.get() 
    player.audio_set_volume(i) 

vol = Scale(window,from_ = 0,to = 100,orient = HORIZONTAL ,resolution = 1,command = show_value) 
    vol.place(x=75, y = 300) 
    vol.set(50)