AttributeError: Button实例没有'set'属性
我想打印上传文件的路径,所以我用了 .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
假设你想把按钮上的文字换成你选择的文件名。
根据错误信息,按钮没有 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()