Calendar and DateEntry widgets for Tkinter
Project description
tkcalendar
tkcalendar is a python module that provides the Calendar and DateEntry widgets for Tkinter. The DateEntry widget is similar to a Combobox, but the drop-down is not a list but a Calendar to select a date. tkcalendar is compatible with both Python 2 and Python 3. It support all locale settings supported by the system and the colors are customizable.
Requirements
- Linux, Windows, Mac
- Python 2 or 3 with tkinter + ttk (default for Windows but not for Linux)
Installation
Ubuntu: use the PPA ppa:j-4321-i/ppa
$ sudo add-apt-repository ppa:j-4321-i/ppa $ sudo apt-get update $ sudo apt-get install python(3)-tkcalendar
Archlinux:
The package is available on AUR
With pip:
$ pip install tkcalendar
Documentation
Calendar widget
Syntax:
Calendar(master=None, **kw)
Widget keyword options:
Standard options
cursor: cursor to display when the pointer is in the widget
font: font of the calendar, can be a string such as “Arial 20 bold” or a Tkinter Font instance
borderwidth: width of the border around the calendar (integer)
state: normal or disabled (unresponsive widget)
Widget-Specific Options
year, month: initially displayed month, default is current month
day: initially selected day, if month or year is given but not day, no initial selection, otherwise, default is today
locale: locale to use, e.g. “fr_FR” for a French calendar
selectmode: “none” or “day” (default) define whether the user can change the selected day with a mouse click
textvariable: StringVar that will contain the currently selected date as str
background: calendar border and month/year name background color
foreground: month/year name foreground color
bordercolor: day border color
background: background color of calendar border and month/year name
foreground: foreground color of month/year name
bordercolor: day border color
selectbackground: background color of selected day
selectforeground: foreground color of selected day
disabledselectbackground: background color of selected day in disabled state
disabledselectforeground: foreground color of selected day in disabled state
normalbackground: background color of normal week days
normalforeground: foreground color of normal week days
- othermonthforeground: foreground color of normal week days
belonging to the previous/next month
- othermonthbackground: background color of normal week days
belonging to the previous/next month
- othermonthweforeground: foreground color of week-end days
belonging to the previous/next month
- othermonthwebackground: background color of week-end days
belonging to the previous/next month
weekendbackground: background color of week-end days
weekendforeground: foreground color of week-end days
headersbackground: background color of day names and week numbers
headersforeground: foreground color of day names and week numbers
disableddaybackground: background color of days in disabled state
disableddayforeground: foreground color of days in disabled state
Virtual Events
A <<CalendarSelected>> event is generated each time the user selects a day with the mouse.
DateEntry widget
Date selection entry with drop-down calendar.
Syntax:
DateEntry(master=None, **kw)
Widget keyword options:
Keyword options of Calendar to configure the drop-down calendar
Keyword options of ttk.Entry
By default, ‘validate’ is set to ‘focusout’ and ‘validatecommand’ is configured so that each time the widget looses focus, if the content is not a valid date (in locale format ‘%x’), it is reset to the previous valid date.
The widget style is set to ‘DateEntry’. A custom style inheritting from ‘DateEntry’ can be created by naming it ‘<style name>.DateEntry’
Virtual Events
A <<DateEntrySelected>> event is generated each time the user selects a date.
Changelog
- tkcalendar 1.2.1
- Fix ValueError in DateEntry with Python 3.6.5
tkcalendar 1.2.0
- Add textvariable option to Calendar
- Add state (‘normal’ or ‘disabled’) option to Calendar
- Add options disabledselectbackground, disabledselectforeground, disableddaybackground and disableddayforeground to configure colors when Calendar is disabled
- Fix DateEntry behavior in readonly mode
- Make Calendar.selection_get always return a datetime.date
tkcalendar 1.1.5
- Fix endless triggering of <<ThemeChanged>> event in DateEntry
tkcalendar 1.1.4
- Fix error in january due to week 53
- Fix DateEntry for ttk themes other than ‘clam’
tkcalendar 1.1.3
- Make DateEntry support initialisation with partial dates (e.g. just year=2010)
- Improve handling of wrong year-month-day combinations
tkcalendar 1.1.2
- Fix bug after destroying a DateEntry
- Fix bug in style and font
tkcalendar 1.1.1
- Fix bug when content of DateEntry is not a valid date
tkcalendar 1.1.0
Bug fix:
- Fix display of the first days of the next month
- Increment year when going from december to january
New widget:
- DateEntry, date selection entry with drop-down calendar
New options in Calendar:
- borderwidth: width of the border around the calendar (integer)
- othermonthbackground: background color for normal week days belonging to the previous/next month
- othermonthweforeground: foreground color for week-end days belonging to the previous/next month
- othermonthwebackground: background color for week-end days belonging to the previous/next month
tkcalendar 1.0.0
- Initial version
Example
try: import tkinter as tk from tkinter import ttk except ImportError: import Tkinter as tk import ttk from tkcalendar import Calendar, DateEntry def example1(): def print_sel(): print(cal.selection_get()) top = tk.Toplevel(root) cal = Calendar(top, font="Arial 14", selectmode='day', cursor="hand1", year=2018, month=2, day=5) cal.pack(fill="both", expand=True) ttk.Button(top, text="ok", command=print_sel).pack() def example2(): top = tk.Toplevel(root) ttk.Label(top, text='Choose date').pack(padx=10, pady=10) cal = DateEntry(top, width=12, background='darkblue', foreground='white', borderwidth=2) cal.pack(padx=10, pady=10) root = tk.Tk() s = ttk.Style(root) s.theme_use('clam') ttk.Button(root, text='Calendar', command=example1).pack(padx=10, pady=10) ttk.Button(root, text='DateEntry', command=example2).pack(padx=10, pady=10) root.mainloop()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size tkcalendar-1.2.1-py2.7.egg (12.6 kB) | File type Egg | Python version 2.7 | Upload date | Hashes View |
Filename, size tkcalendar-1.2.1-py2-none-any.whl (12.8 kB) | File type Wheel | Python version py2 | Upload date | Hashes View |
Filename, size tkcalendar-1.2.1-py3.6.egg (12.6 kB) | File type Egg | Python version 3.6 | Upload date | Hashes View |
Filename, size tkcalendar-1.2.1-py3-none-any.whl (12.8 kB) | File type Wheel | Python version py3 | Upload date | Hashes View |
Filename, size tkcalendar-1.2.1.tar.gz (13.7 kB) | File type Source | Python version None | Upload date | Hashes View |
Hashes for tkcalendar-1.2.1-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 934d7cb050af55b40d2dda84a3c60a75f0f12842dde50b41e0f52f04b507f07c |
|
MD5 | 6225e3319424cfaae4dea3a5e11474ea |
|
BLAKE2-256 | c68e78f2bbc918997a1df6bf88494b5ff7ad7bf6c96313e9591162c4fea1b211 |
Hashes for tkcalendar-1.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f690c3923ed5c700356e3ac7d269f9c245a116a64d927dcdbb88a6dfc4dd063e |
|
MD5 | 7de72b8495a822684e2acd609b14f9c0 |
|
BLAKE2-256 | 7de1533eb3f9d7adad0cd1ddba79ae3f354fc697a72fb962da305107e6aa4d38 |