如何在Jupyter中修改HTML日历布尔值的背景色(True时设为绿色)
解决方案
你之前用的终端ANSI颜色码(\033[0;30;42m这类)只适用于命令行界面,在HTML里完全不生效,得用CSS样式来设置背景色。下面给你两种具体的修改方式,按需选择:
方式1:给「Run? True」这一行单独加绿色背景
直接在输出run值的地方,用<span>标签包裹并添加内联样式:
修改你代码里的目标行:
calendar_html+= "<b>1:</b> %s <br><br><b>2:</b> %s<br><b>3:</b> %s <br><b>4:</b> %s (%s) <br><br><b>Run?</b> %r <br><hr width= 98%%>" % (data_json[i]['1'],data_json[i]['2'],len(data_json[i]['list']),w['3'],w['4'],w['run'])
改成:
# 用带样式的span包裹True,绿色背景+白色文字更醒目 calendar_html+= "<b>1:</b> %s <br><br><b>2:</b> %s<br><b>3:</b> %s <br><b>4:</b> %s (%s) <br><br><b>Run?</b> <span style='background-color: #28a745; color: white; padding: 2px 4px; border-radius: 2px;'>True</span> <br><hr width= 98%%>" % (data_json[i]['1'],data_json[i]['2'],len(data_json[i]['list']),w['3'],w['4'])
因为这段代码本身就在if w['run'] == True的分支里,直接写True即可,无需再用%r占位符。
方式2:给整个日期单元格()加淡绿色背景
如果希望整个日期格子都显示绿色背景,需要先判断当天是否有run=True的事件,再生成对应的<td>标签:
修改你代码里处理day != 0的部分:
else: # 先检查当天是否存在run=True的事件 has_run_true = False for i in data_json: for w in data_json[i]['retests']: if w['retest_date'] == "%s-%s-%s" % (year,str(month).zfill(2),str(day).zfill(2)) and w['run'] == True: has_run_true = True break if has_run_true: break # 根据判断结果生成带样式或不带样式的td if has_run_true: calendar_html+= "<td style='background-color: #d4edda; padding: 8px;'><p class= 'daynumber'><b>%s</b></p><br>" % (day) else: calendar_html+= "<td><p class= 'daynumber'><b>%s</b></p><br>" % (day) # 保留你原来的事件遍历逻辑 events_list =[] for i in data_json: for w in data_json[i]['retests']: if w['retest_date'] == "%s-%s-%s" % (year,str(month).zfill(2),str(day).zfill(2)): if not w['comment']: if w['run'] == True: calendar_html+= "<b>1:</b> %s <br><br><b>2:</b> %s<br><b>3:</b> %s <br><b>4:</b> %s (%s) <br><br><b>Run?</b> True <br><hr width= 98%%>" % (data_json[i]['1'],data_json[i]['2'],len(data_json[i]['list']),w['3'],w['4'])
这里用#d4edda是淡绿色,不会过于刺眼,适合作为单元格背景。
内容的提问来源于stack exchange,提问作者King Cam
相关产品推荐
相关产品推荐

