我正试图创建一个按钮,从用户机器打开本地文件。我已经设置了按钮,打开文件的功能非常简单。当点击实际按钮时,实际上什么都没有发生。预期的结果应该是打开一个显示本地文件的框。
到目前为止,这是我的程序:
from tkinter import *
import tkinter.filedialog
gui = Tk(className='musicAi')
gui.geometry("500x500")
def UploadAction(event=None):
filename = filedialog.askopenfilename()
print('Selected:', filename)
# create button
importMusicButton = Button(gui, text='Import Music', command = UploadAction, width=40, height=3, bg='#0052cc', fg='#ffffff', activebackground='#0052cc', activeforeground='#aaffaa')
linkAccountButton = Button(gui, text='Link Account', width=40, height=3, bg='#0052cc', fg='#ffffff', activebackground='#0052cc', activeforeground='#aaffaa')
settingsButton = Button(gui, text='Settings', width=40, height=3, bg='#0052cc', fg='#ffffff', activebackground='#0052cc', activeforeground='#aaffaa')
helpButton = Button(gui, text='Help', width=40, height=3, bg='#0052cc', fg='#ffffff', activebackground='#0052cc', activeforeground='#aaffaa')
# add button to gui window
importMusicButton.pack()
linkAccountButton.pack()
settingsButton.pack()
helpButton.pack()
gui.mainloop()
由于使用import tkinter.filedialog
导入filedialog
,因此需要使用tkinter.filedialog.askopenfilename()
来执行askopenfilename()
。
将import tkinter.filedialog
更改为from tkinter import filedialog
或import tkinter.filedialog as filedialog
。
我有一个完美的选择。
不使用:import tkinter.filedialog
你可以用更好的东西。
使用:from tkinter.filedialog import *
然后您可以从filename = filedialog.askopenfile()
中删除filedialog
。
将其更改为:filename = askopenfile()
:(
由于在Uploadfunction中使用了事件对象作为参数,因此请使用bind方法。
ImportMusicButton.bind(<"Button-1">, lambda:UploadAction())
在UploadAction(event=None(中,删除事件参数的默认值。应该是
def UploadAction(event):
code goes here...