我有以下代码:
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():,现在单击按钮时我没有收到任何错误。相反,程序按钮看起来似乎已经冻结了被点击,就好像它正在尝试做某事但不会有任何结果。
答案 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)