Python圖形化介面
阿新 • • 發佈:2019-02-06
import tkinter as tk from tkinter import ttk from Include.top.youshang520i.dao.studentDao import studentDao as stuDao from Include.top.youshang520i.pojo.Studnet import Student as stu root=tk.Tk() root.title("學管理系統") root.resizable(width=False,height=False) #設定視窗大小 root.geometry('500x500') tt=tk.Label(root, text = "學生管理系統", height = 2,width=2, font=("溫軟雅黑", 12),bg="red",fg="yellow") tt.pack(fill='x') # tt2=tk.Label(root,text="",height=1).pack(fill='x') tt3=tk.Label(root,text="",height=1) items=()#將treeview中觸發的資料提取為全域性 #點選Tree時觸發的方法 def clickTree(self): #獲取點選的行 item=tree.selection() global items if(len(item)>0): # editButton.config(relief='sunken')#按鈕樣式凹陷 # editButton.config(relief='groove')#按鈕樣式水平 sidEntry.config(state='disabled')#編輯文字框只讀 editButton.config(state='normal')#按鈕可用 # editButton.config(state='disabled')#按鈕不可用 #獲得選中的結果集(返回元祖格式的結果集) items=tree.item(item,"values") sid=items[0] sname=items[1] ssex=items[2] sage=items[3] sidEntry.delete(0,len(items)) snameEntry.delete(0,len(items)) ssexEntry.delete(0,len(items)) sageEntry.delete(0,len(items)) sidEntry.insert(0,sid) snameEntry.insert(1,sname) ssexEntry.insert(2,ssex) sageEntry.insert(3,sage) tree = ttk.Treeview(root,show="headings") tree['columns']=("sid",'sname','ssex','sage') tree.column("sid",width=100,anchor='center') tree.column("sname",width=100,anchor='center') tree.column("ssex",width=100,anchor='center') tree.column("sage",width=100,anchor='center') tree.heading("sid",text="編號") tree.heading("sname",text="姓名") tree.heading("ssex",text="性別") tree.heading("sage",text="年齡") def quryAll():#查詢全部 qurAll = stuDao.queryStudentAll() for s in qurAll: tree.insert("",s[0],text="values" ,values=(s[0],s[1],'男' if(s[2]=='1') else '女',s[3])) #插入資料, quryAll() def delAll(tree):#刪除全部 x = tree.get_children()#獲得所有的專屬的下標(新手不是很瞭解但是是獨有的,像下標一樣的那種,但又不是下標的格式,有點像16進位制的格式) for ll in x: tree.delete(ll) tree.bind("<<TreeviewSelect>>",clickTree)#給列表繫結點選事件 tree.pack(pady=25) # tt3.pack(fill='x') #定義一個大容器 clickFrame=tk.Frame(root,width=500) leftFrame=tk.Frame(clickFrame) # 設定列頭與輸入框 sidLabel=tk.Label(leftFrame,text="編號:") snameLabel=tk.Label(leftFrame,text="姓名:") ssexLabel=tk.Label(leftFrame,text="性別:") sageLabel=tk.Label(leftFrame,text="年齡:") sidEntry=tk.Entry(leftFrame) snameEntry=tk.Entry(leftFrame) ssexEntry=tk.Entry(leftFrame) sageEntry=tk.Entry(leftFrame) #文字與文字框的位置(使用的網格佈局) snameEntry.grid(row=0,column=3,padx=1)#編號文字框 ssexEntry.grid(row=1,column=1,padx=1,pady=15) sageEntry.grid(row=1,column=3,padx=1,pady=15) sidEntry.grid(row=0,column=1,padx=1) sidLabel.grid(row=0,column=0,padx=1)#編號文字 snameLabel.grid(row=0,column=2,padx=1) ssexLabel.grid(row=1,column=0,padx=1,pady=15) sageLabel.grid(row=1,column=2,padx=1,pady=15) leftFrame.pack(fill='x')#上容器 #點選選中事件(有一個bug就是沒辦法刪除之前的資料) def clickAdd(self): print('新增')#ralsed addButton.config(relief='sunken') stu.id = sidEntry.get() stu.sname = snameEntry.get() ssex = ssexEntry.get() stu.ssex=2 if(ssex=='男'): stu.ssex=1 stu.sage = sageEntry.get() i = stuDao.addStudent(stu) if(i>0): delAll(tree) quryAll() def clickDele(self):#刪除 deleButton.config(relief='sunken') i = stuDao.delStudent(items[0]) if(i>0): delAll(tree) quryAll() def clickEdit():#修改 stu.id=items[0] stu.sname=snameEntry.get() ssex=ssexEntry.get() stu.ssex=2 if(ssex=='男'): stu.ssex=1 stu.sage=sageEntry.get() i = stuDao.editStudent(stu) if(i>0): delAll(tree) quryAll() def clickQuery(self): print('查詢') queryButton.config(relief='sunken') def releaseAdd(self): addButton.config(relief='raised') def releaSedele(self): deleButton.config(relief='raised') def releaseEdit(self): editButton.config(relief='raised') def releaseQuery(self): queryButton.config(relief='raised') rightFrame=tk.Frame(clickFrame)#下容器 addButton = tk.Button(rightFrame,text="新增")#,command=add deleButton = tk.Button(rightFrame,text="移除")#,command=dele #rightFrame=需要新增到哪個容器裡面去 #command=當點選的時候會觸發哪個函式 #state將按鈕的狀態設定為失效(文件上面是直接大寫字母的DISABLED) editButton = tk.Button(rightFrame,text="修改",state='disabled',command=clickEdit)# queryButton = tk.Button(rightFrame,text="查詢")#,command=query #給按鈕新增滑鼠事件 addButton.bind(sequence="<Button-1>",func=clickAdd)#當點選新增按鈕時 addButton.bind(sequence="<ButtonRelease-1>",func=releaseAdd)#當滑鼠釋放時 deleButton.bind(sequence="<Button-1>",func=clickDele) deleButton.bind(sequence="<ButtonRelease-1>",func=releaSedele) # editButton.bind(sequence="<Button-1>",func=clickEdit) editButton.bind(sequence="<ButtonRelease-1>",func=releaseEdit) queryButton.bind(sequence="<Button-1>",func=clickQuery) queryButton.bind(sequence="<ButtonRelease-1>",func=releaseQuery) addButton.grid(row=0,column=0,padx=50,pady=10) deleButton.grid(row=0,column=2,padx=50,pady=10) editButton.grid(row=1,column=0,padx=50,pady=10) queryButton.grid(row=1,column=2,padx=50,pady=10) rightFrame.pack() clickFrame.pack()#最大容器 root.mainloop() # labelHello = tk.Label(root,text='123',height=10,width=50,font=("Arial", 12)) # labelHello.pack()
最終展示結果,但是有點小bug太耗時間了....