AttributeError:“function”对象没有属性“read”,如何修复?

2024-04-20 10:03:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码:

import simpleaudio as sa
import tkinter
from tkinter import *
from tkinter import filedialog
import wave

raiz = Tk()
raiz.geometry("200x300")

#function that plays song -is not playing eith a function in parameters, only with the path
def add_song():
    song = filedialog.askopenfilename(initialdir='Downloads/', title="Escolha uma musica", filetypes=(("wav files", "*.wav"), ))

my_menu = Menu(raiz)
raiz.config(menu=my_menu)

addmusica_menu = Menu(my_menu)
my_menu.add_cascade(label="Adicionar", menu=addmusica_menu)
addmusica_menu.add_command(label="Uma Música", command=add_song)

def play():
    wave_read = wave.open(add_song, 'rb')
    wave_obj = sa.WaveObject.from_wave_read(wave_read)
    wave_obj = sa.WaveObject.from_wave_file(add_song)
    play_obj = wave_obj.play()

def stop():
    play_obj.stop()

Rightframe = Frame(raiz)
Rightframe.pack(pady=1)

middleframe = Frame(Rightframe)
middleframe.pack(pady=5, padx=5)

play_img = PhotoImage(file='botoes/play.png')
playBt = Button(middleframe, image=play_img, borderwidth=0, command=play)
playBt.grid(row=10, column=2, padx=5)

parar_img = PhotoImage(file='botoes/parar.png')
pararBt = Button(middleframe, image=parar_img, borderwidth=0, command=stop)
pararBt.grid(row=10, column=0, padx=5)

raiz.mainloop()

错误消息:

Traceback (most recent call last):
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\tkinter\__init__.py", line 1883, in __call__
    return self.func(*args)
  File "playquefunciona.py", line 22, in play
    wave_read = wave.open(add_song, 'rb')
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\wave.py", line 510, in open
    return Wave_read(f)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\wave.py", line 164, in __init__
    self.initfp(f)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\wave.py", line 129, in initfp
    self._file = Chunk(file, bigendian = 0)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\chunk.py", line 61, in __init__
    self.chunkname = file.read(4)
AttributeError: 'function' object has no attribute 'read'

Tags: inpyimportaddobjreadplaysong