In this article we will see how we can set text to the selected date of QCalendarWidget. In order to add the text to the selected date we have to use paintCell
method, it is virtual protected method and it can be used by overwriting the method since this method is called in paintEvent(). Below is how the text will look like
Implementation Steps :
1. Create Calendar class which inherits the QCalendarWidget
2. Inside the Calendar class overwrite the paintCell method
3. Create a main window
4. Add Calendar object inside the main window
Below is the Calendar class code
# QCalendarWidget Class class Calendar(QCalendarWidget): def paintCell(self, painter, rect, date): super(Calendar, self).paintCell(painter, rect, date) # checking if date is selected date if date == self.selectedDate(): # saving the painter painter.save() # creating a QFont object font = QFont() # setting pixel size of the font font.setPixelSize(11) # making font bold font.setBold(True) # making font italic font.setItalic(True) # setting font to the painter painter.setFont(font) # drawing text painter.drawText( rect.topLeft() + QPoint(10, 10), "{}".format("Geek"), ) # restoring the painter painter.restore()
Below is the implementation
# importing libraries from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui
from PyQt5.QtGui import * from PyQt5.QtCore import * import sys
# QCalendarWidget Class class Calendar(QCalendarWidget):
def paintCell( self , painter, rect, date):
super (Calendar, self ).paintCell(painter, rect, date)
# checking if date is selected date
if date = = self .selectedDate():
# saving the painter
painter.save()
# creating a QFont object
font = QFont()
# setting pixel size of the font
font.setPixelSize( 11 )
# making font bold
font.setBold( True )
# making font italic
font.setItalic( True )
# setting font to the painter
painter.setFont(font)
# drawing text
painter.drawText(
rect.topLeft() + QPoint( 10 , 10 ),
"{}" . format ( "Geek" ),
)
# restoring the painter
painter.restore()
class Window(QMainWindow):
def __init__( self ):
super ().__init__()
# setting title
self .setWindowTitle( "Python " )
# setting geometry
self .setGeometry( 100 , 100 , 500 , 400 )
# calling method
self .UiComponents()
# showing all the widgets
self .show()
# method for components
def UiComponents( self ):
# creating a QCalendarWidget object
# as Calendar class inherits QCalendarWidget
self .calendar = Calendar( self )
# setting cursor
self .calendar.setCursor(Qt.PointingHandCursor)
# setting size of the calendar
self .calendar.resize( 350 , 240 )
# setting font to the calendar
self .calendar.setFont(QFont( 'Times' , 5 ))
# move the calendar
self .calendar.move( 10 , 10 )
# create pyqt5 app App = QApplication(sys.argv)
# create the instance of our Window window = Window()
# start the app sys.exit(App. exec ())
|
Output :