You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用tkcalendar标记日历事件时出现'int' object is not callable错误求助

问题原因与解决方法

错误根源

你遇到的TypeError: 'int' object is not callable是因为变量名冲突:

  • 你用date = canvas.create_text(50, 100, text="Date: ", font=("Helvetica", 14))这行代码,把date变量赋值成了canvas.create_text返回的整数ID(画布元素的标识)。
  • 之后再写day = date(2024, 3, 15)时,Python会把date当成那个整数,而不是datetime模块里的date类,自然无法像函数一样调用,触发错误。

解决步骤

  1. 重命名冲突变量:把date变量改成其他名称,比如date_text_id,避免覆盖datetime.date类。
  2. 正确引用日期类:确保你能正确调用datetime.date——如果导入语句是import datetime,就用datetime.date(2024,3,15);如果是from datetime import date,直接用date(2024,3,15)即可。

修正后的完整代码片段

testPage=Toplevel()
testPage.title("New Booking")
testPage.geometry("1366x768")
canvas=Canvas(testPage, width=1366, height=768)
canvas.pack()
frame=Frame(testPage)
topbar=canvas.create_rectangle(0,0, 1366,30, fill="gray")

lblDate=canvas.create_text(400,300, text="")
# 重命名变量,避免和datetime.date冲突
date_text_id=canvas.create_text(50, 100, text="Date: ", font=("Helvetica", 14))
date_today=datetime.now()
cal=Calendar(testPage, width=12, background='saddle brown', foreground='white', mindate=date_today, disabledforeground='red')
cal.place(x=150, y=100)
# 正确调用datetime.date类
day=datetime.date(2024, 3, 15)  # 如果是from datetime import date,就写day=date(2024,3,15)
cal.calevent_create(day, "", tags="test")
cal.tag_config("test", background="red")

额外注意

  • 确保你的导入语句包含所需类,比如开头加:
    from tkinter import Toplevel, Canvas, Frame
    from tkcalendar import Calendar
    from datetime import datetime, date
    
  • 这样修改后,2024年3月15日的日历单元格会被标记为红色背景,符合你的需求。

内容的提问来源于stack exchange,提问作者j.jam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 05:37:16