我已经在python中创建了具有月和周视图的日历应用程序。在月视图中,我可以每天写笔记,将它们存储在字典中,然后将字典保存到磁盘中,以便随时可以阅读。
现在我正在使用周视图。我设法显示了从月视图中选择的日期的月份中的星期(星期几和星期一至星期日的天数)。在代码中,我使用Gtk.Label了一周和一周中的几天将它们附加在一个Gtk.Grid。在每一天的下面,我都Gtk.TextView使用一个for in循环附加了一个循环,该循环创建了一个Gtk.TextView从月视图显示每天笔记的列表。现在,我每次选择一周中的某一天都只能显示一个笔记。不同日期的多个笔记不能全部显示。这是我的问题。以下是周历为update(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
考虑到我Gtk.TextBuffer在月视图和周视图中都使用了相同的视图。 self.text是月份视图中的注释。
提前致谢。
问题的答案是以下代码:
list_of_dates = list(self.d.keys())
list_of_notes = list(self.d.values())
dictionary = dict(zip(list_of_dates, list_of_notes))
for key in dictionary.items():
date = datetime.date(year=key[0][0], month=key[0][1]+1, day=key[0][2])
week_of_day = str(date.isocalendar()[1])
day_of_week = int(date.strftime("%w"))-1
if week == week_of_day:
self.textviews[day_of_week].get_buffer().set_text(key[1])
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。