[英]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.