我想打印上传文件的路径,所以我使用.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'
答案 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()