Calendar/Date picker
#!/usr/bin/env python
#
# [SNIPPET_NAME: Calendar/Date picker]
# [SNIPPET_CATEGORIES: PyQt4]
# [SNIPPET_DESCRIPTION: A calendar/date picker example]
# [SNIPPET_AUTHOR: Darren Worrall <[email protected]>]
# [SNIPPET_LICENSE: GPL]
# [SNIPPET_DOCS: http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qcalendarwidget.html]
# example calendar.py
import sys
from datetime import timedelta
from PyQt4 import QtGui, QtCore
class Calendar(QtGui.QWidget):
"""
A QCalendarWidget example
"""
def __init__(self):
# create GUI
QtGui.QMainWindow.__init__(self)
self.setWindowTitle('Calendar widget')
# Set the window dimensions
self.resize(300,100)
# vertical layout for widgets
self.vbox = QtGui.QVBoxLayout()
self.setLayout(self.vbox)
# Create a calendar widget and add it to our layout
self.cal = QtGui.QCalendarWidget()
self.vbox.addWidget(self.cal)
# Create a label which we will use to show the date a week from now
self.lbl = QtGui.QLabel()
self.vbox.addWidget(self.lbl)
# Connect the clicked signal to the centre handler
self.connect(self.cal, QtCore.SIGNAL('selectionChanged()'), self.date_changed)
def date_changed(self):
"""
Handler called when the date selection has changed
"""
# Fetch the currently selected date, this is a QDate object
date = self.cal.selectedDate()
# This is a gives us the date contained in the QDate as a native
# python date[time] object
pydate = date.toPyDate()
# Calculate the date a week from now
sevendays = timedelta(days=7)
aweeklater = pydate + sevendays
# Show this date in our label
self.lbl.setText('The date in a week will be: %s' % aweeklater)
# If the program is run directly or passed as an argument to the python
# interpreter then create a Calendar instance and show it
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
gui = Calendar()
gui.show()
app.exec_()