【问题标题】:python tkinter calender, placing the numberspython tkinter 日历,放置数字
【发布时间】:2014-05-22 00:03:23
【问题描述】:

我正在创建一个使用 tkinter 显示年历的 python 程序。

但是,我偶然发现了这个问题 - 每次有人更改月份时,显然必须在我的网格中重新安排日子。我如何实现这一目标?例如,2014 年 5 月 1 日从星期三开始。由于我的日历有 0-10 列,我的日历是 2-7 行和 2-8 行,我希望数字从第 2 行、第 6 行和第 31 行开始,第 6 行、第 8 行。

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

【问题讨论】:

    标签: python class python-3.x calendar tkinter


    【解决方案1】:

    你能发布一个代码sn-p吗?我不确定我是否得到了这个问题,但我的第一个想法是生成一个网格,将tk.Labels 分配给每个位置,并将对它们的引用保存在一个列表(或二维列表)中。然后,当您需要更新时,只需调用

    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, ... ?我并不是说你的答案不好,我只是希望有一个更“打字友好”的答案。但是,答案就是答案,它有帮助......
    猜你喜欢
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    相关资源
    最近更新 更多