簡體   English   中英

TkInter按鈕單擊命令后的Python函數TypeError

[英]Python function TypeError upon TkInter button click command

我有以下代碼:

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)

盡管我確實認為函數playMusic的參數不正確,但我並未對Python函數和按鈕命令做太多工作,因此不確定出了什么問題。

為了使此功能正常運行,我需要在此處進行哪些更改? 我知道,如果我完全刪除def playMusic(root):那么當我運行編碼時,音樂將按def playMusic(root):播放。 但是,單擊按鈕的命令不正確。

編輯-

我已經切換到def play_music():,現在單擊按鈕時沒有出現任何錯誤。 取而代之的是,程序按鈕看起來像被凍結了一樣被單擊,好像它正在嘗試做某事一樣,但是什么也沒有。

我在玩代碼以嘗試使某些東西正常工作,我發現如果這樣做,我會:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM