Я обыскал и нашел много способов, как назначить файл переменной, открыв файл по прямой ссылке, но мне было интересно, как назначить файл переменной, которая будет считаться функцией, когда пользователь использует диалог файла для открытия файла (например, File> open> user selected file)?Python: Использование диалога открытого файла для назначения файла переменной?
Я пытаюсь открыть музыкальный файл, который должен быть передан pyglet.media.load(variable containing file)
.
возвращает ошибку: NameError: f is not defined
from tkinter import *
from tkinter.filedialog import askopenfilename
import pyglet
from threading import Thread
app = Tk()
app.title("Music Player")
app.geometry("600x200")
have_avbin = True
def openFile():
song = filedialog.askopenfilename(filetypes = (("MP3 files", "*.mp3"),("All files","*.*")))
f = song
return f
#Creates menu bar for opening MP3s, and closing the program
menu = Menu(app)
file = Menu(menu)
file.add_command(label='Open', command= openFile) # replace 'print' with the name of your open function
file.add_command(label='Exit', command=app.destroy) # closes the tkinter window, ending the app
menu.add_cascade(label='File', menu=file)
app.config(menu=menu)
#Run each app library mainloop in different python thread to prevent freezing
def playMusic():
global player_thread
player_thread = Thread(target=real_playMusic)
player_thread.start()
def stopMusic():
global player_thread
player_thread = Thread(target=real_stopMusic)
player_thread.start()
#Play open file function attached to button
def real_playMusic():
music = pyglet.media.load(f);
music.play()
pyglet.app.run()
#Stop the music function
def real_stopMusic():
pyglet.app.exit()
#Play button creation
btnPlay = Button(app, text ="Play", command = playMusic)
btnPlay.grid()
#Pause button creation
btnPause = Button(app)
btnPause.grid()
btnPause.configure(text = "Stop", command = stopMusic)
app.mainloop() # keep at the end
Вы должны сделать некоторые исследования в [функции] (https://docs.python.org/3.4/tutorial/controlflow.html#defining- функции) - в частности, как работают переменные scope и 'return'. – TigerhawkT3