Виджет календаря PyQt4 - выделяйте 1 и 15 числа каждого месяца - PullRequest
0 голосов
/ 28 июня 2018

Возникают трудности с отображением виджета календаря PyQt4, в котором выделены 1 и 15 числа каждого месяца. К сожалению, документации по этому вопросу не так много, поэтому любая помощь будет отличной. Пример: красная рамка около 5 числа каждого месяца

1 Ответ

0 голосов
/ 28 июня 2018

Вы должны наследовать от QCalendarWidget и перезаписать метод paintCell:

QCalendarWidget.paintCell (художник, прямоугольник, дата)

Параметры:

художник - QtGui.QPainter

rect - QtCore.QRect

date - QtCore.QDate

Извините, я использую PyQt5

import sys
from PyQt5.QtCore    import Qt, QRectF
from PyQt5.QtGui     import QPainter
from PyQt5.QtWidgets import QCalendarWidget, QApplication

class CalendarWidget(QCalendarWidget):
    def paintCell(self, painter, rect, date):
        painter.setRenderHint(QPainter.Antialiasing, True)
        if (date.day() == 1) or (date.day() == 15):
            painter.save()
            painter.drawRect(rect)
            painter.setPen(Qt.blue)
            painter.drawText(QRectF(rect), Qt.TextSingleLine|Qt.AlignCenter, str(date.day()))
            painter.restore()
        else:
            QCalendarWidget.paintCell(self, painter, rect, date)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = CalendarWidget()
    w.show()
    sys.exit(app.exec_())

enter image description here

...