我有一个DateEntry小部件和一个用于清除DateEntry内容的按钮。我希望DateEntry为空白,除非用户选择一个日期。
我的问题是,如果我选择DateEntry小部件并为其指定焦点,那么第一次使用清除按钮将不起作用,因为DateEntry在失去焦点后会自动完成。
例:
from tkinter import *
from tkinter import ttk
from tkcalendar import DateEntry
def clearDateEntry():
clearButton.focus_set()
myDateEntry.delete(0,END)
root=Tk()
myDateEntry=DateEntry(root)
myDateEntry.pack()
myDateEntry.delete(0,END)
clearButton=Button(root,text='clear',command=clearDateEntry)
clearButton.pack()
root.mainloop()
要复制:给DateEntry焦点,然后单击清除。
在
clearDateEntry()
函数中,我首先将焦点移到清除按钮,我希望该按钮会触发自动完成,因此我可以立即将其删除,但这是行不通的。我如何使
clearDateEntry()
实际上第一次清除DateEntry?如果有办法关闭DateEntry的自动完成功能,那也可以解决我的问题。 最佳答案
DateEntry
设置为在焦点对准时验证条目内容(validate
选项设置为“ focusout”),如果内容不是有效日期,则将今天的日期放入条目。想法是在条目中始终有一个有效日期。
因此,您可以通过设置简单地摆脱这种行为myDateEntry.configure(validate='none')
这样,输入内容将不再针对焦点突出进行验证,但是在单击下拉按钮时仍将对其进行验证,因此在显示日历时不会出现无效日期的问题。
关于python - 移动焦点后,Tkcalendar清除DateEntry,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59607575/