python - 有没有办法在 tkcalendar 中向 DateEntry 添加 calevents?
问题描述
我正在尝试找到一种方法来突出显示 tkcalendar 的 DateEntry 类上的特定日期。
这是在 Python 3 上运行的。它可以成功地与 tkcalendar 的 Calendar 类一起使用,但似乎不适用于 DateEntry 类。
import tkinter as tk
from tkinter import ttk
from tkcalendar import Calendar, DateEntry
window = tk.Tk()
cal = DateEntry(window)
date = cal.datetime.today() + cal.timedelta(days=2)
cal.calevent_create(date, 'Hello World', 'message')
cal.tag_config('message', background='red', foreground='yellow')
cal.pack()
window.mainloop()
如果我们定义 cal=Calendar(window),这将有效,但每当我尝试将其切换到 DateEntry 时都会失败。
复制评论:将 cal 更改为 Calendar 对象,然后添加:
de=DateEntry(window) de.pack() de.bind("<<DateEntrySelected>>", cal.calevent_create(date, 'Hello World', 'message'))
似乎对我不起作用......我最终得到了一个
TypeError: 'int' object is not callable
每当我尝试选择日期时。
解决方案
问题:有没有办法在 tkcalendar 中将 calevents 添加到 DateEntry 中?
不,DateEntry
用于选择一个日期。
Calendar
用于根据日期举行日历事件。
你必须bind("<<DateEntrySelected>>", ...
做def callback(...
<ref to Calendar>.calevent_create(<selected date>, 'Hello ...'
import tkinter as tk
from tkcalendar import Calendar, DateEntry
window = tk.Tk()
def date_entry_selected(event):
w = event.widget
date = w.get_date()
print('Selected Date:{}'.format(date))
# <ref to Calendar>.calevent_create(date, 'Hello ...`)
cal.calevent_create(date, 'Hello ...')
cal = Calendar(window, selectmode='day', year=2019, month=10, day=28)
cal.pack(fill="both", expand=True)
de=DateEntry(window)
de.pack()
de.bind("<<DateEntrySelected>>", date_entry_selected)
window.mainloop()
推荐阅读
- reactjs - 在 React 中管理共享/单例客户端对象
- teradata - 使用 Teradata 正则表达式标记键和值
- python - 在 while 循环 ValueError 中,是否可以跳回特定部分?
- oracle - 从 ORDS 中粘贴 GeoJSON
- php - DIVI 联系模块,需要一种在 GET 请求中传递输入字段值的方法
- reactjs - react-intl 维护原始数字中的位数
- python - 在python for循环中将字典数据添加到元组中
- javascript - 什么是“类型优先”的流架构?
- flutter - 飞镖和粒子云
- python - 禁用部分 tkinter 文本小部件