AttributeError:Button实例没有属性'set'

时间:2014-08-03 10:18:07

标签: 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.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'

1 个答案:

答案 0 :(得分:0)

假设您要将按钮中的文本替换为所选文件的名称。

如错误消息所示,该按钮没有set方法。您可以使用configure ...

def callback():
    file_name.configure(text=askopenfilename(...))

但您应该使用Variable代替。创建StringVar并将其绑定到Button,然后使用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()