我需要entry
一次只包含一个文件选择。就目前而言,如果用户多次点击button
来选择多个文件(比如他们最初选择了错误的文件或他们改变了主意),entry
将这些多个文件名连接在一起。基本上,我希望entry
仅包含用户的最后一个文件选择。
示例代码:
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
def browse():
if entry.selection_present() == 1:
entry.selection_clear()
entry.insert(0, filedialog.askopenfilename(parent=frame))
root = Tk()
frame = ttk.Frame(root)
frame.pack()
entry = ttk.Entry(frame, width=100)
entry.pack()
button = ttk.Button(frame, text="Browse", command=browse)
button.pack()
root.mainloop()
entry.selection_present()
和entry.selection_clear()
都没有达到我的期望。 entry.selection_present()
始终输出0,而entry.selection_clear()
似乎什么都不做。
如果我将if
块更改为:
if entry.get() != "":
entry.delete(0,1000)
但这似乎有点hackish,因为参数 - 删除所有高达1000的字符 - 是任意的。我真正想要的是清除以前的整个文件选择。
Tkinter 8.5文档:https://www.tcl.tk/man/tcl8.5/TkCmd/ttk_entry.htm#M23
答案 0 :(得分:1)
使用END
(或“结束”)表示条目的结束。
entry.delete(0, END)
上述声明将删除条目内容。 (从开始(0)到结束)。
或者,您可以使用StringVar对象绑定条目,稍后调用set('')
来清除内容。
v = StringVar()
entry = Entry(master, textvariable=v)
# to clear
v.set('')