如何在Gtk.Calendar上创建一个周日历,并在每天显示注释(Python)

2024-09-20 01:32:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python创建了一个带有月和周视图的日历应用程序。 在“月视图”中,我可以每天写笔记,将它们存储在字典中,并将字典保存到磁盘中,以便随时阅读。在

现在我正在处理week视图。我成功地显示了我从month视图中选择的日期(周数和天数,周一到周日)。在代码中,我使用Gtk.Label表示周数和周数,并将它们附在Gtk.Grid中。在每一天下面,我使用一个Gtk.TextView循环创建一个for in列表,其中显示了每月每天的笔记视图。对吗现在,我每次只显示一个音符周。如果我有多个笔记在不同的日子里不能全部显示他们。还有这是我的问题。 下面是周日历正在更新的代码片段(def update_week_cal)。如何修改循环中的代码部分,以便我可以显示从月视图中选择的每个星期的所有注释?在

    def update_week_cal(self, *args):
        year, month, day = self.calendar.get_date()
        month = month + 1
        today = datetime.date(year, month, day)
        self.page2.remove(self.label)
        self.label = Gtk.Label(str(today.isocalendar()[1]) + "η Εβδομάδα")
        self.page2.attach(self.label, 3, 1, 1, 1)
        dates = list([today + datetime.timedelta(days=i) for i in range(0 - today.weekday(), 7 - today.weekday())])
        j = 0
        for days in dates:
            self.labels[j].destroy()
            if days == today:
                self.labels[j] = Gtk.Label()
                self.labels[j].set_markup('<span font = "12" weight = "bold">{0}</span>'.format(days.strftime("%a ""%d/""%m")))
            else:
                self.labels[j] = Gtk.Label(days.strftime("%a ""%d/""%m"))
            self.page2.attach(self.labels[j], j, 2, 1, 1)
            self.page2.remove(self.textviews[j])
            self.textviews[j] = Gtk.TextView()
            self.textviews[j].set_editable(False)
            self.textviews[j].set_wrap_mode(Gtk.WrapMode.WORD_CHAR)
            self.page2.attach(self.textviews[j], j, 3, 1, 1)
            for i in range(7):
                try:
                    if self.text is not None and self.d[(year, month, day)]:
                        x = int(today.strftime("%w"))-1
                        self.textviews[x].get_buffer().set_text(self.text)
                except KeyError:
                    x = int(today.strftime("%w")) - 1
                    self.textviews[x].get_buffer().set_text(self.text)
                    print(i, j, x)

                except TypeError:
                    x = int(today.strftime("%w")) - 1
                    self.textviews[x].get_buffer().set_text(self.text)

            self.show_all()
            j = j + 1

考虑到我在month和week视图中使用了相同的Gtk.TextBufferself.text是月视图中的注释。在

提前谢谢。在


Tags: textself视图gtkfortodaylabelsdays
1条回答
网友
1楼 · 发布于 2024-09-20 01:32:11

好吧,我设法根据日期显示笔记,改变了思考问题的方式,从开始。那个在旧代码末尾添加新代码,减去:

            for i in range(7):
                try:
                    if self.text is not None and self.d[(year, month, day)]:
                        x = int(today.strftime("%w"))-1
                        self.textviews[x].get_buffer().set_text(self.text)
                except KeyError:
                    x = int(today.strftime("%w")) - 1
                    self.textviews[x].get_buffer().set_text(self.text)
                    print(i, j, x)

                except TypeError:
                    x = int(today.strftime("%w")) - 1
                    self.textviews[x].get_buffer().set_text(self.text)

问题的答案是下面的代码:

^{pr2}$

相关问题 更多 >