PyQt: widget de QCalendar

QCalendarwidget es un control selector de fecha útil. Proporciona una vista mensual. El usuario puede seleccionar la fecha mediante el uso del mouse o el teclado, siendo la fecha de hoy la predeterminada. También se puede estipular el intervalo de fechas del calendario.

A continuación se muestran algunos métodos de utilidad de esta clase:

A continuación se muestran los métodos de QCalendar más utilizados.

No Señor. Métodos y descripción
1

setDateRange()

Establece la fecha superior e inferior disponible para la selección

2

setFirstDayOfWeek()

Determina el día de la primera columna del calendario.

Las constantes diarias predefinidas son:

  • Qt.Monday
  • Qt.Tuesday
  • Qt.Wednesday
  • Qt.Thursday
  • Qt.Friday
  • Qt.Saturday
  • Qt.Sunday
3

setMinimumDate()

Establece la fecha más baja para la selección

4

setMaximumDate()

Establece la fecha superior para la selección

5

setSelectedDate()

Establece un objeto QDate como la fecha seleccionada

6

showToday()

Muestra el mes de hoy

7

selectedDate()

Recupera la fecha seleccionada

8

setGridvisible()

Activa o desactiva la cuadrícula del calendario

Ejemplo

El siguiente ejemplo tiene un widget de calendario y una etiqueta que muestra la fecha seleccionada actualmente. El código completo es el siguiente:

import sys
from PyQt4 import QtGui, QtCore

class Example(QtGui.QWidget):

   def __init__(self):
      super(Example, self).__init__()

      self.initUI()
		
   def initUI(self):
	
      cal = QtGui.QCalendarWidget(self)
      cal.setGridVisible(True)
      cal.move(20, 20)
      cal.clicked[QtCore.QDate].connect(self.showDate)
		
      self.lbl = QtGui.QLabel(self)
      date = cal.selectedDate()
      self.lbl.setText(date.toString())
      self.lbl.move(20, 200)
		
      self.setGeometry(100,100,300,300)
      self.setWindowTitle('Calendar')
      self.show()
		
   def showDate(self, date):
	
      self.lbl.setText(date.toString())
		
def main():

   app = QtGui.QApplication(sys.argv)
   ex = Example()
   sys.exit(app.exec_())
	
if __name__ == '__main__':
   main()

El código anterior produce la siguiente salida: