Python 2.7 PyQt4日历小部件-突出显示每个月的1号和15号

Python 2.7 PyQt4日历小部件-突出显示每个月的1号和15号,python-2.7,pyqt4,Python 2.7,Pyqt4,很难让PyQt4日历小部件突出显示每个月的1号和15号。不幸的是,这方面没有太多的文档,所以任何帮助都会很好 您必须从QCalendarWidget继承并覆盖paintCell方法: QCalendarWidget.paintCell(painter、rect、date) 参数: painter–QtGui.QPainter rect–QtCore.QRect 日期–QtCore.QDate 对不起,我用的是PyQt5 import sys from PyQt5.QtCore import

很难让PyQt4日历小部件突出显示每个月的1号和15号。不幸的是,这方面没有太多的文档,所以任何帮助都会很好

您必须从QCalendarWidget继承并覆盖paintCell方法:

QCalendarWidget.paintCell(painter、rect、date)

参数:

painter–QtGui.QPainter

rect–QtCore.QRect

日期–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_())

谢谢!工作得很好!