Python函数TypeError在TkInter按钮单击命令

时间:2015-02-19 12:22:16

标签: python tkinter typeerror

我有以下代码:

import mp3play
try:

    from Tkinter import *
except ImportError:

    from tkinter import *

root = Tk()

def playMusic(root):
    filename = r'D:\My Documents\School Work\A2 Computing\Project\Westerado.mp3'
    mp3 = mp3play.load(filename)
    mp3.play()

# Declaring the buttons
button1 = Button(text="Play", fg="Black", height=1, width=7, command= playMusic)

以及其他一些与此错误无关的内容,但是当我运行程序时,GUI将显示为正常,但是当我单击button1时出现以下错误:

Exception in Tkinter callback
Traceback (most recent call last):
  File "D:\Python2.7\lib\lib-tk\Tkinter.py", line 1532, in __call__
    return self.func(*args)
TypeError: playMusic() takes exactly 1 argument (0 given)

我没有对Python函数和按钮命令做太多工作,因此我不确定出了什么问题,尽管我确实认为函数playMusic的参数不正确。

为了让这项工作变得有效,我需要更改什么?我知道,如果我完全取出def playMusic(root):,那么当我跑到代码时,音乐将会发挥应有的作用。但是按钮单击命令不正确。

编辑 -

我已切换到def play_music():,现在单击按钮时我没有收到任何错误。相反,程序按钮看起来似乎已经冻结了被点击,就好像它正在尝试做某事但不会有任何结果。

1 个答案:

答案 0 :(得分:1)

我正在玩代码试图让某些东西起作用,我发现如果我这样做了:

filename = r'D:\My Documents\School Work\A2 Computing\Project\Westerado.mp3'
mp3 = mp3play.load(filename)

全球;然后在函数内只有这个:

def play_music():
    mp3.play()

然后当我点击“播放”按钮时,它的效果非常好!

不确定为什么会这样,而其他方式却没有!但是现在我不是在抱怨。

总的来说看起来像是:

filename = r'D:\My Documents\School Work\A2 Computing\Project\Westerado.mp3'
mp3 = mp3play.load(filename)

def play_music():
    mp3.play()

# Declaring the buttons
button1 = Button(text="Play", fg="Black", height=1, width=7, command=play_music)