RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1306144
Accepted
WTFisGoingOn
WTFisGoingOn
Asked:2022-07-17 20:11:22 +0000 UTC2022-07-17 20:11:22 +0000 UTC 2022-07-17 20:11:22 +0000 UTC

如何更改 QCalendarWidget 中特定单元格的背景?

  • 772

当前月份的每一天都有一组数据[0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0](一天一个值)。

如何QCalendaryWidget以某种(例如红色)颜色为某个单元格着色?

日期兴趣上background-color一个单元格t 的变化。QCalendaryWidge

例子:

a = [0,1,0,0,0,1,1,0,0,1,1,1,1,0,0]
i = 0

while i < len(a):
    if (a[i] == 0):
        print('Красим красным день i')
    else:
        print('Красим зелёным день i')
    i += 1
python
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    S. Nick
    2022-07-18T01:50:31Z2022-07-18T01:50:31Z

    void QCalendarWidget:: paintCell (QPainter * painter, const QRect &rect, const QDate &date) const

    date使用给定painter和绘制由给定 指定的单元格rect。

    我看到你的任务是这样的:

    import sys
    from PyQt5.QtCore import Qt, QRect
    from PyQt5.QtGui import QTextCharFormat, QBrush, QColor, QPen
    from PyQt5.QtWidgets import QApplication, QCalendarWidget
    
    
    class CalendarWidget(QCalendarWidget):
        def __init__(self, *args, **kwargs):
            super(CalendarWidget, self).__init__(*args, **kwargs)
            
            self._dict = {
                "202107": [None, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0],
                "202108": [None, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1],
            }
            # Скрыть номер недели слева
            self.setVerticalHeaderFormat(self.NoVerticalHeader)
    
            # Изменить цвета субботы и воскресенья
            fmtGreen = QTextCharFormat()
            fmtGreen.setForeground(QBrush(Qt.green))
            self.setWeekdayTextFormat(Qt.Saturday, fmtGreen)
            fmtOrange = QTextCharFormat()
            fmtOrange.setForeground(QBrush(QColor(252, 140, 28)))
            self.setWeekdayTextFormat(Qt.Sunday, fmtOrange)
    
        def paintCell(self, painter, rect, date):
            QCalendarWidget.paintCell(self, painter, rect, date)
            y_m, day = date.toString("yyyyMM"), date.day()
            v = self._dict.get(y_m)
            
            if v:
                #print(f'y_m={y_m}, day={day}, v={v}')
                if len(v)-1 >= day and v[day]:
                    painter.setBrush(QColor(255, 77, 77, 70))                  
                    painter.setPen(QPen(QColor(250, 0, 0), -1.0, Qt.SolidLine)) 
                    rect = QRect(rect.x(), rect.y(), rect.width()-1, rect.height()-1)  
                    painter.drawRect(rect)
    
    StyleSheet = '''
    
    /* ниже календарной формы */
    #qt_calendar_calendarview {
        outline: 0px;                  /* Удалить выделенную пунктирную рамку */
        selection-background-color: rgb(220, 188, 212); /* Выберите цвет фона */
    }
    '''
    
    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        app.setStyleSheet(StyleSheet)
        w = CalendarWidget()
        w.show()
        sys.exit(app.exec_())
    

    在此处输入图像描述

    • 1

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    表格填充不起作用

    • 2 个回答
  • Marko Smith

    提示 50/50,有两个,其中一个是正确的

    • 1 个回答
  • Marko Smith

    在 PyQt5 中停止进程

    • 1 个回答
  • Marko Smith

    我的脚本不工作

    • 1 个回答
  • Marko Smith

    在文本文件中写入和读取列表

    • 2 个回答
  • Marko Smith

    如何像屏幕截图中那样并排排列这些块?

    • 1 个回答
  • Marko Smith

    确定文本文件中每一行的字符数

    • 2 个回答
  • Marko Smith

    将接口对象传递给 JAVA 构造函数

    • 1 个回答
  • Marko Smith

    正确更新数据库中的数据

    • 1 个回答
  • Marko Smith

    Python解析不是css

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5