1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | import openpyxl import tkinter as tk from tkinter import ttk from tkinter import messagebox import time #設定視窗。 window = tk.Tk() #設定視窗標題。 window.title('Actitivy') #設定視窗大小。 window.geometry('800x600') #設定Treeview元件,顯示標題,顯示10列。 Treeview_1=ttk.Treeview(window,show='headings',height=10) Treeview_1.grid(column=0, row=1,columnspan=20)
#設定Label標籤參數(bg背景顏色、font字型格式、width宽度15個字元、高度1個字元) Label_1 = tk.Label(window,bg='yellow', text='請輸入編號:',font=('Arial', 12),width=15,height=1,padx=5) #設定排版方式在第一排靠左。 Label_1.grid(column=0, row=0,sticky='w')
#設定Entry輸入方框參數(font字型格式、width宽度5個字元) Entry_1 = tk.Entry(window, font=('Arial', 12),width=5) #設定排版方式在第二排且離左邊框距離5。 Entry_1.grid(column=1, row=0,padx=5)
#Button按鈕事件。 def button_event(): #取得Entry元件的值。 Input_number=Entry_1.get() #跑資料迴圈進行判斷和輸入值是否相同及資料最後一行判斷。 for D in range(1,len(D1_value)): if D == len(D1_value): break #判斷編號等於輸入的值及第四欄有IN字樣,符合的話表示登記過。 if D1_value[D][0] == int(Input_number) and D1_value[D][3]=='IN': #顯示已登記過。 Treeview_1.insert("",D,values=D1_value[D]) messagebox.showinfo("check finished", D1_value[D][4]) #判斷編號等於輸入的值及第四欄為空,表示未登記過。 elif D1_value[D][0] == int(Input_number) and D1_value[D][3]==None: #Check IN欄轉成由空值轉成IN。 D1_value[D][3]='IN' #使用Column行和row列方式寫入資料。 sheet.cell(column=4, row=D+1).value ='IN' #Time欄位記錄時間。 Now_Time = time.localtime() D1_value[D][4]=time.strftime("%Y%m%d %H:%M:%S",Now_Time) #使用Excel位置寫入E+列。 sheet['E'+str(D+1)].value =time.strftime("%Y%m%d %H:%M:%S",Now_Time) #寫入Excel wb.save("D:\\Train\\name.xlsx") #將資料寫入Treeview元件內。 Treeview_1.insert("",D,values=D1_value[D]) #清空Entry元件值。 Entry_1.delete(0,'end') break
#設定Button按鈕及觸發事件button_event。 Button_1=tk.Button(window,text='送出', command=button_event) #設定排版方式在第三排。 Button_1.grid(column=2,row=0)
#讀取EXCEL檔案。 wb = openpyxl.load_workbook("D:\\Train\\name.xlsx") #讀取工作表1。 sheet = wb['工作表1'] #列的初始值。 x=0 #將資料轉成二維陣列。 D1_value=[[]] while True: D1_value.append([]) x=x+1 #當第列的第一個為空值時中斷。 if sheet.cell(row=x, column=1).value == None: break for y in range (0,5): D1_value[x].append(sheet.cell(row=x, column=1+y).value)
#刪除二維陣列中前後值。 del D1_value[0] del D1_value[len(D1_value)-1]
#設定列的標題。 Treeview_1["columns"]=D1_value[0] #設定列的欄為寛120及顯示出標頭名稱。 for i in range(0,5): Treeview_1.column(Treeview_1["columns"][i],width=120) Treeview_1.heading(Treeview_1["columns"][i],text=Treeview_1["columns"][i])
|
沒有留言:
張貼留言