Python AttributeError:按钮实例没有属性';设置';

Python AttributeError:按钮实例没有属性';设置';,python,tkinter,Python,Tkinter,我想打印上传文件的路径,所以我使用了.set()。尝试使用全局变量,但更改文件时它不会覆盖文件名 def callback(): file_name.set(askopenfilename(filetypes=(("Music File", "*.mp3"),("Video files", "*.mpg")))) file_name = Button(root, text="open", command=callback) file_name.pack(side=Tkinter.TO

我想打印上传文件的路径,所以我使用了.set()。尝试使用全局变量,但更改文件时它不会覆盖文件名

def callback():
    file_name.set(askopenfilename(filetypes=(("Music File", "*.mp3"),("Video files", "*.mpg"))))


file_name = Button(root, text="open", command=callback)
file_name.pack(side=Tkinter.TOP)
我犯了这个错误,有什么建议吗

Exception in Tkinter callback
Traceback (most recent call last):
  File "D:\Python27\lib\lib-tk\Tkinter.py", line 1486, in __call__
    return self.func(*args)
  File "C:\Users\Xavier_\Desktop\PROJECT_FINAL(please don't edit)\segmentation_GUI.py", line 20, in callback
    file_name.set(askopenfilename(filetypes=(("Music File", "*.mp3"),("Video files", "*.mpg"))))
AttributeError: Button instance has no attribute 'set'

假设要用选定文件的名称替换按钮中的文本

如错误消息所示,该按钮没有设置方法。您可以使用
配置

def callback():
    file_name.configure(text=askopenfilename(...))
但你更应该用a来代替。创建
StringVar
并将其绑定到
按钮
,然后使用
set
更新和
get
检索该变量的值,即按钮上的文本

def callback():
    var.set(askopenfilename(filetypes=(("Music File", "*.mp3"),("Video files", "*.mpg"))))

root = Tk()
var = StringVar()
var.set("select file...")
file_name = Button(root, textvariable=var, command=callback)
file_name.pack(side=TOP)
root.mainloop()

调用
set
时,您想做什么?是否要将按钮的文本更改为所选文件名?如前所述,您的问题的答案是,“
按钮
s没有设置的方法”,您说您想“打印上传文件的路径”。您正在寻找
打印
功能吗?你说的“打印”是什么意思?也许你在找一份工作?它有一个
set
方法,可以将它附加到某些类型的小部件上,这样设置它就会更新小部件的文本。也许不是,这很难说,但这只是猜测……调试的第一条规则:假设错误消息告诉您的是真相。错误消息表示按钮实例没有“设置”方法。这是真的。现在的问题是,为什么你认为它应该有一个固定的方法,你认为这个方法做什么?