Есть ли способ добавить калевенты в DateEntry в tkcalendar? - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь найти способ выделить определенные даты в классе DateEntry tkcalendar.

Это выполняется на Python 3. Он успешно работает с классом Calendar tkcalendar, но, похоже, не применяется к классу 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 (окно), но происходит сбой всякий раз, когда я пытаюсь переключить его на 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 голосов
/ 28 октября 2019

Вопрос : есть ли способ добавить калевенты в DateEntry в tkcalendar?

Нет, DateEntry для выбор одинСвидание. Calendar предназначен для проведения календарных событий на основе даты.


Вам необходимо bind("<<DateEntrySelected>>", ... и в def callback(... do <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()

...