this is what worked for me

class CalendarWidget(QtWidgets.QCalendarWidget): def __init__(self, parent=None): super(CalendarWidget, self).__init__(parent, verticalHeaderFormat=QtWidgets.QCalendarWidget.NoVerticalHeader, gridVisible=False) self.setObjectName("patient_visit_date_calendar_widget") prev_button = self.findChild(QtWidgets.QToolButton, "qt_calendar_prevmonth") next_button = self.findChild(QtWidgets.QToolButton, "qt_calendar_nextmonth") # Create QIcon instances for your icons prev_icon = QIcon(":resources/icons/arrow_back.svg") next_icon = QIcon(":resources/icons/arrow_forward.svg") # Set the icons to the buttons prev_button.setIcon(prev_icon) next_button.setIcon(next_icon) for btn in (prev_button, next_button): btn.setIconSize(QtCore.QSize(15, 15)) for d in (QtCore.Qt.Saturday, QtCore.Qt.Sunday,): fmt = self.weekdayTextFormat(d) fmt.setForeground(QtCore.Qt.darkGray) self.setWeekdayTextFormat(d, fmt) self.setStyleSheet(QSS) def paintCell(self, painter, rect, date): if date == self.selectedDate(): painter.save() painter.fillRect(rect, QtGui.QColor("white")) painter.setPen(QtCore.Qt.NoPen) painter.setBrush(QtGui.QColor(10, 186, 181, 100)) r = QtCore.QRect(QtCore.QPoint(), min(rect.width(), rect.height())*QtCore.QSize(1, 1)) r.moveCenter(rect.center()) painter.drawEllipse(r) painter.setPen(QtGui.QPen(QtGui.QColor("white"))) painter.drawText(rect, QtCore.Qt.AlignCenter, str(date.day())) painter.restore() else: super(CalendarWidget, self).paintCell(painter, rect, date)