python tkinter日历,放置数字

python tkinter日历,放置数字,python,class,python-3.x,calendar,tkinter,Python,Class,Python 3.x,Calendar,Tkinter,我正在创建一个python程序,它使用tkinter显示年度日历 但是,我偶然发现了这个问题——每当有人改变月份时,这些日子显然必须在我的网格中重新安排自己。我如何做到这一点?例如,2014年5月1日从星期三开始。因为我的日历是0-10列,我的日历是第2-7行和第2-8列,所以我希望数字从第2行开始,第6列开始,第31行从第6行开始,第8列开始 我怎么能这样做?欢迎提供任何帮助或建议。特别是到目前为止,我认为每个元素都需要是一个标签,每个标签都需要有自己的名称。或者,tkinter中可能还有一些

我正在创建一个python程序,它使用tkinter显示年度日历

但是,我偶然发现了这个问题——每当有人改变月份时,这些日子显然必须在我的网格中重新安排自己。我如何做到这一点?例如,2014年5月1日从星期三开始。因为我的日历是0-10列,我的日历是第2-7行和第2-8列,所以我希望数字从第2行开始,第6列开始,第31行从第6行开始,第8列开始


我怎么能这样做?欢迎提供任何帮助或建议。特别是到目前为止,我认为每个元素都需要是一个标签,每个标签都需要有自己的名称。或者,tkinter中可能还有一些我不知道的小部件可以帮我解决这个问题。

你能发布一段代码片段吗?我不确定我是否理解了这个问题,但我的第一个想法是生成一个网格,将
tk.label
分配给每个点,并在列表(或二维列表)中保留对它们的引用。然后,当您需要更新时,只需致电

self.labels[i][j].config(text='foo')
然后,您将在
i
j
上循环,根据日历的布局设置值

编辑: 不,我不会硬编码,使用循环应该很简单,例如:

import math

# Initialize the calendar matrix
cal = []
for i in range(5): # 5 weeks
    cal.append([])
    for j in range(7): # 7 days per week
        cal[i].append('')

# Set the calendar for some month
start = 3 # Wed
for day in range(31):
    row = math.floor( (day+start) / 7)
    col = (day+start) - 7*row
    cal[row][col] = str(day+1)

print(cal)
吐出来的

[['', '', '', '1', '2', '3', '4'], ['5', '6', '7', '8', '9', '10', '11'], ['12', '13', '14', '15', '16', '17', '18'], ['19', '20', '21', '22', '23', '24', '25'], ['26', '27', '28', '29', '30', '31', '']]

当然,在GUI中,您希望有一个矩阵
tk.Label
或其他任何东西。

所以我应该浪费时间写下self.dayslot1,self.dayslot2,self.dayslot3?我不是说你的答案不好,我只是希望有一个更“打字友好”的答案。但是,答案仍然是答案,它有助于。。。