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