有没有一种方法可以将calevents添加到tkcalendar中的DateEntry?

时间:2019-10-28 12:47:17

标签: python tkinter tkcalendar

我试图找到一种在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 
     

每当我尝试选择日期时。

1 个答案:

答案 0 :(得分:0)

  

问题:是否可以在tkcalendar中将日历事件添加到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()