喵喵程式-tkinter日期選擇器

平常我們在用google如果是日期欄位會自動跳出可以選擇日期的欄位,這個功能用tkinter製作需要引入套件tkcalendar。基本上是要讓其他使用者用平常習慣的輸入方式,又是個大家被好用的東西寵壞的狀況,不過GUI本來就是要越懶越好,這個功能在Access或一般網頁也都很常見,所以必須做出來。

程式目標:

1. 預設今天日期

2. 跳出日期選擇器

3. 選完日期後自動選擇器

import tkinter as tk
from tkinter import ttk
import time #產生今天日期用的
from tkcalendar import Calendar #日期選擇器,這個要另外安裝套件

def today_yyyymmdd(): #日期參數後面可能會常常用到,先做成函式。
    year=time.localtime().tm_year
    month=time.localtime().tm_mon
    day=time.localtime().tm_mday
    return year,month,day

#日期選擇框參考,https://stackoverflow.com/questions/4443786/how-do-i-create-a-date-picker-in-tkinter
def day_choose(event): #如果要做成按鈕,記得把event刪掉
    global date_inp 
    def insert_day():
        date_inp.delete(1,'end') #插入日期資料前,先刪掉本來的資料
        date_inp.insert(1,cal.selection_get()) #插入日期選擇器資料
        top.destroy() #最後把彈出式視窗關掉
    top = tk.Toplevel(root) #彈出式視窗
    #日期選擇器,日期帶入預設今天日期
    cal = Calendar(top,
                   font="10", selectmode='day',
                   cursor="hand1", year=today_yyyymmdd()[0], month=today_yyyymmdd()[1], day=today_yyyymmdd()[2])
    cal.pack(fill="both", expand=True)
    ttk.Button(top, text="ok", command=insert_day).pack()

root=tk.Tk()
date_l=tk.Label(root,text='日期')
date_l.grid(row=0,column=0)
date_inp=tk.Entry(root)
date_inp.grid(row=0,column=1)
date_inp.insert(1,str(today_yyyymmdd()[0])+'-'+str(today_yyyymmdd()[1])+'-'+str(today_yyyymmdd()[2])) #預設今天日期
date_inp.bind('<1>',day_choose) #點選文字欄彈出日期選擇器
#date_btn=tk.Button(root,text='選擇日期',command=day_choose) #做成按鈕的作法
#date_btn.grid(row=0,column=2)
root.mainloop()

主要的參考資料來源:

1. https://stackoverflow.com/questions/4443786/how-do-i-create-a-date-picker-in-tkinter

2. https://stackoverflow.com/questions/44160181/tkinter-call-function-when-entry-box-is-clicked

留言

這個網誌中的熱門文章

喵喵程式-原生python安裝與使用

喵喵程式-批次下載檔案