Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 输出函数中括号之间的值_Python 3.x - Fatal编程技术网

Python 3.x 输出函数中括号之间的值

Python 3.x 输出函数中括号之间的值,python-3.x,Python 3.x,目前,我读了一本书,名叫《头先python》。我通晓了一切,直到我读到第九章。为什么我的应用程序不能工作,如果我没有把一些东西放在更改功能的括号里 为什么我需要“v”—— def更换量(v): 通过代码,您可以停止、启动和调整曲目的音量 from tkinter import * import pygame.mixer app = Tk() app.title("Head First Mix") sound_file = "50459_M_RED_Nephlimizer.wav" mixe

目前,我读了一本书,名叫《头先python》。我通晓了一切,直到我读到第九章。为什么我的应用程序不能工作,如果我没有把一些东西放在更改功能的括号里

为什么我需要“v”—— def更换量(v):

通过代码,您可以停止、启动和调整曲目的音量

from tkinter import *
import pygame.mixer

app = Tk()
app.title("Head First Mix")


sound_file = "50459_M_RED_Nephlimizer.wav"
mixer = pygame.mixer
mixer.init()

def track_start():
    track.play(loops = -1)

def track_stop():
    track.stop()

def shutdown():
    track.stop()
    app.destroy()

def track_toogle():
    if track_playing.get() == 1:
        track_start()
    else:
        track_stop()

def change_volume(v):

    track.set_volume(volume.get())



track_playing = IntVar()

track = mixer.Sound(sound_file)

track_button = Checkbutton(app,
                           variable = track_playing,
                           command = track_toogle,
                           text = "50459_M_RED_Nephlimizer.wav")


track_button.pack(side = LEFT)

volume = DoubleVar()

volume.set(track.get_volume())

volume_scale = Scale(app,
                     variable = volume,
                     from_ = 0.0,
                     to = 1.0,
                     resolution = 0.1,
                     command = change_volume,
                     label = "Volume",
                     orient = HORIZONTAL)

volume_scale.pack(side = RIGHT)

app.protocol("WM_DELETE_WINDOW", shutdown)

app.mainloop()
写入时需要参数
v
。但是,如前所述,它从未实际使用该参数。相反,由于您在代码的其他地方调用了
volume=track.get_volume()
,除非您在其他地方修改
volume
(或曲目的音量值),否则您的代码实际上相当于

def change_volume(v):

    track.set_volume(volume.get())
如果要实际更改该值,则需要使用参数的值来设置音量:

def change_volume(v):

    track.set_volume(track.get_volume())

因此,如果我没有误解,我需要这个参数,因为volume.get的值发生了变化?仔细查看代码,您似乎将
volume
的值设置为代码中其他地方的
track.get_volume()
的结果。如果您要调用代码中编写的
change\u volume(v)
,它将忽略该参数并调用
track.set\u volume(volume.get())
;这里的问题是,因为
volume.get()
当前返回的值与
track.get\u volume()
的值相同。这基本上就像调用
track.set\u volume(track.get\u volume())
,什么也不做更改。在
change\u volume
的定义中,您需要使用参数的值来正确设置音量。再看一遍,我不熟悉
Scale
对象。用户调整滑块时是否使用
命令
参数,将滑块的值用作
设置音量
的参数?如果是这样的话,那么我建议的改变应该会奏效。如果没有,您需要弄清楚如何在滑块发生变化时获取其值,并将其传递给
set_volume
(当然,请确保在设置曲目音量时使用参数值)。
def change_volume(v):

    track.set_volume(v.get())