[英]Trouble with ttk.Entry.selection_present() and ttk.Entry.selection_clear() in tkinter 8.5 and python 3.3
我需要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_clear()
我的期望。 entry.selection_present()
始终输出0, entry.selection_clear()
似乎什么也不做。
如果将if
块更改为:我可以使我的代码工作:
if entry.get() != "":
entry.delete(0,1000)
但这似乎有点骇人听闻,因为参数-删除最多1000个字符-是任意的。 我真正想要的是清除整个先前的文件选择。
Tkinter 8.5文档: https : //www.tcl.tk/man/tcl8.5/TkCmd/ttk_entry.htm#M23
使用END
(或'end')表示条目的结尾。
entry.delete(0, END)
以上声明将删除条目内容。 (从开始(0)到结束)。
另外,您可以将条目与StringVar对象绑定,然后再调用set('')
清除内容。
v = StringVar()
entry = Entry(master, textvariable=v)
# to clear
v.set('')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.