Как добавить текст в PyQt QcalendarWidget
Как писать в ячейку QCalendarWidget? В python я продолжаю получать сообщение о том, что художник не активен. Может ли кто-нибудь мне с этим помочь?
qp = QtGui.QPainter(self)
qp.setPen(QtGui.QColor(168, 34, 3))
qp.setFont(QtGui.QFont('Decorative', 10))
qp.drawText(rect, QtCore.Qt.AlignCenter, 'hello')
rect = QtCore.QRect()
date = QtCore.QDate.fromString('2020-01-01')
calendar = QtWidgets.QCalendarWidget(self)
calendar.paintCell(qp, rect, date)
Спасибо
1 ответ
Вы должны унаследовать от QCalendarWidget
и перезаписать paintCell
метод.
import sys
from PyQt5.QtCore import Qt, QRectF, QDate
from PyQt5.QtGui import QPainter, QColor, QFont
from PyQt5.QtWidgets import QCalendarWidget, QApplication
class CalendarWidget(QCalendarWidget):
def paintCell(self, painter, rect, date):
painter.setRenderHint(QPainter.Antialiasing, True)
if date == QDate(2020, 1, 1):
painter.save()
painter.drawRect(rect)
painter.setPen(QColor(168, 34, 3))
painter.setFont(QFont('Decorative', 10))
painter.drawText(QRectF(rect), Qt.TextSingleLine|Qt.AlignCenter, str(date.day()))
painter.drawText(rect, Qt.AlignCenter, 'Hello\nWorld')
painter.restore()
else:
QCalendarWidget.paintCell(self, painter, rect, date)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = CalendarWidget()
w.show()
sys.exit(app.exec_())