我使用ttkbootstrap框架主要是因为现代的DateEntry
,它有一些有用的主题。我的目标是让DateEntry
小部件自动更新Label
,使用从DatePickerPopup中选择的日期,但是使用.bind()
的"<<DateEntrySelected>>"
事件不像使用常规tkinter那样工作。我的解决方法是使用Button
来调用我的update_label函数-单击。用户每次选择日期时生成的虚拟事件是什么?
下面是我的代码片段:
import ttkbootstrap as ttk
from datetime import datetime
def update_label(event):
selected_date = cal.entry.get()
date_object = datetime.strptime(selected_date, "%m/%d/%Y")
formated_date = date_object.strftime("%A, %b %d")
label.config(text=f"{formated_date}")
root = ttk.Window()
root.geometry("600x400")
# Label
label = ttk.Label(root, text="Today")
label.pack(pady=5)
# DateEntry
cal = ttk.DateEntry(root, bootstyle="primary")
cal.pack(pady=5)
cal.bind("<<DateEntrySelected>>", update_label) # FIX
root.mainloop()
字符串
ttkbootstrap文档:https://ttkbootstrap.readthedocs.io/en/latest/api/widgets/dateentry/
在那里,它说.“* 一个日期输入小部件将组合框和一个按钮结合在一起,并在get_date函数上附加一个回调。按下时,会显示一个日期查询器弹出窗口。返回的值会插入到组合框中。日期查询器弹出窗口将使用组合框中的日期作为关注日期. *”
解决方法是使用一个按钮,像这样.
btn = ttk.Button(root, text="Update", command=update_label)
btn.pack(pady=5)
型
3条答案
按热度按时间v64noz0r1#
您可以使用
StringVar
并将其绑定到calendar.entry
:字符串
创建此应用程序:
的数据
yyyllmsg2#
我的解决方法是使用Button在单击时调用update_label函数。
这个问题是可以解决的。
删除
update_label
函数中的参数。注解掉第7行和第8行。
添加按钮构件。
片段:
字符串
截图:
的数据
mwkjh3gx3#
ttkbootstrap.DateEntry
不会生成虚拟事件<<DateEntrySelected>>
。但是,您可以创建自定义DateEntry
类来模拟以下功能:字符串