喵喵程式-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
留言
張貼留言