Python中删除日历小部件中的“星期数”列

2024-09-27 00:14:47 发布

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

我有一个简单的日历和日期输入小部件,来自Python中的tkcalendar,它工作正常,显示结果如下所示。在

我不想让它显示日历中的周数列[或下个月的周数的额外底行]—我尝试使用“showWeeks=False”,但它似乎没有起到作用。在

review_date_entry = DateEntry(dates_panel, 
                              textvariable=self.review_date,
                              showWeeks = False)

我知道,任何自定义选项的日历小部件工作,以及日期输入小部件,因此任何线索将被赞赏,需要所有的建议,我可以得到。谢谢您!在

下面是日历和日期输入的代码:

^{pr2}$

Tags: selffalsedate部件选项reviewdatesentry
3条回答

下面的方法似乎可以关闭WeekNumber:

self.de = DateEntry(self.frame, width=12, background='darkblue',
                foreground='white',showweeknumbers=False,firstweekday='sunday')

# To see other parameters that you can change
print("DE keys=",self.de.keys())

文档不好,你得去挖掘source code。在

weeks number列对应于一个名为_week_nbswlabel(实例ttk.Label())的列表。这样你就可以一个接一个地把它们消灭掉:

for i in range(6):
    cal._week_nbs[i].destroy()

完整程序:

^{pr2}$

演示:

enter image description here

不幸的是,这不是一个选择。在tkcalendar__init__方法中,week numbers are always added无论选项是什么:

    ...
    self._week_nbs = []
    self._calendar = []
    for i in range(1, 7):
        self._cal_frame.rowconfigure(i, weight=1)
        wlabel = ttk.Label(self._cal_frame, style='headers.%s.TLabel' % self._style_prefixe,
                           font=self._font, padding=2,
                           anchor="e", width=2)
        self._week_nbs.append(wlabel)
        wlabel.grid(row=i, column=0, sticky="esnw", padx=(0, 1))
        self._calendar.append([])
        for j in range(1, 8):
            label = ttk.Label(self._cal_frame, style='normal.%s.TLabel' % self._style_prefixe,
                              font=self._font, anchor="center")
            self._calendar[-1].append(label)
            label.grid(row=i, column=j, padx=(0, 1), pady=(0, 1), sticky="nsew")
            if selectmode is "day":
                label.bind("<1>", self._on_click)

您可能想尝试其他小部件,如建议的here,似乎{a3}没有周数。在

相关问题 更多 >

    热门问题