【问题标题】:Creating a volume slider in tkinter在 tkinter 中创建音量滑块
【发布时间】:2014-11-21 00:02:59
【问题描述】:

我正在尝试使用.get() 访问来自我的Scale 的条目,但是当我移动滑块时音量不会改变。顺便说一句,我也在使用pygame 混音器。

相关代码;

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)

如果您希望我发布任何其他 sn-ps,请询问,谢谢。

【问题讨论】:

    标签: python python-3.x tkinter slider tkinter-scale


    【解决方案1】:

    您似乎忘记将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 表明您没有在函数内部使用参数。

    【讨论】:

    • 添加会出现错误; Tkinter 回调 Traceback 中的异常(最近一次调用最后一次):文件“/usr/lib/python3.4/tkinter/__init__.py”,第 1490 行,在 call 中返回 self.func(*args) TypeError: change_vol() 接受 0 个位置参数,但给出了 1 个
    • @DamhanRichardson - 啊,一个事件对象正在发送到change_vol。查看我的编辑。
    • 你是最棒的!在网上的任何地方都找不到这个。
    猜你喜欢
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多