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

时间:2018-06-05 09:22:52

标签: python python-3.x tkinter datepicker tkinter-entry

我在Python中使用tkcalendar中的一个简单的Calendar和DateEntry小部件,它工作正常并显示如下所示的结果。

希望它显示日历中的周数列[或下个月的额外底行] - 我尝试使用“ showWeeks = False “但它似乎没有成功。

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

据我所知,Calendar小部件的任何自定义选项都适用于DateEntry小部件,因此任何线索都会受到赞赏,需要我能得到的所有建议。谢谢!

以下日历代码和DateEntry:

try:
    import tkinter as tk
    from tkinter import ttk
except ImportError:
    import Tkinter as tk
    import ttk

from tkcalendar import Calendar, DateEntry

def example1():
    def print_sel():
        print(cal.selection_get())

    top = tk.Toplevel(root)

    cal = Calendar(top,
                   font="Arial 14", selectmode='day',
                   cursor="hand1", year=2018, month=2, day=5)
    cal.pack(fill="both", expand=True)
    ttk.Button(top, text="ok", command=print_sel).pack()

def example2():
    top = tk.Toplevel(root)

    ttk.Label(top, text='Choose date').pack(padx=10, pady=10)

    cal = DateEntry(top, width=12, background='darkblue',
                    foreground='white', borderwidth=2)
    cal.pack(padx=10, pady=10)

root = tk.Tk()
s = ttk.Style(root)
s.theme_use('clam')

ttk.Button(root, text='Calendar', command=example1).pack(padx=10, pady=10)
ttk.Button(root, text='DateEntry', command=example2).pack(padx=10, pady=10)

root.mainloop()

3 个答案:

答案 0 :(得分:2)

文档很差,你必须深入研究source code

周数列对应于名为wlabel的{​​{1}}(ttk.Label()个实例)列表。所以你可以循环遍历它们并一个接一个地销毁它们:

_week_nbs

完整计划

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

<强>演示:

enter image description here

答案 1 :(得分:1)

不幸的是,它不是一个选择。在__init__ tkcalendar 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) 方法中,无论选项是什么:

<div class="form-wizard-page">

    <div class="container always"> 
    
    <div class="card alternative">
        
    
    <mat-tab-group class="form-wizard" [(selectedIndex)]="selectedIndex">
            
    <mat-tab *ngFor="let name of names; let i = index" >
    
            <ng-template mat-tab-label>

            <a class="routes" (click)="route(routes[i])">{{ name }}</a>

            </ng-template>
            
     </mat-tab>

    
    
    </mat-tab-group> 
    
    <div  >
    
    <router-outlet></router-outlet>
    
    </div>
    
    </div>
    
    </div>
    
    </div>
    

您可能想要按照建议here尝试其他小部件,似乎ttkcalendar不会有周数。

答案 2 :(得分:0)

以下似乎可以关闭星期数:

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())