Python+OpenCV人脸检测打卡系统
如需远程调试,可加QQ905733049由专业技术人员远程协助!
运行代码如下:
-
from tkinter import *
-
from tkinter import ttk
-
import db
-
import detect
-
-
-
class APP:
-
def __init__(self):
-
-
self.root = Tk()
-
self.root.title(
'FACE')
-
self.root.geometry(
'%dx%d' % (
550,
450))
-
-
self.createFirstPage()
-
-
# 新录入的人的姓名
-
self.name = StringVar()
-
-
def createFirstPage(self):
-
self.page1 = Frame(
self.root)
-
self.page1.grid()
-
Label(
self.page1, height=
4, text=
'人脸识别系统', font=(
'microsoft yahei',
26)).grid(columnspan=
2)
-
#self.usernames 是 用户名字组成的列表
-
self.usernames = []
-
self.usernames =
self.mydb.query_name()
-
-
-
self.button11 = Button(
self.page1, width=
18, height=
2, text=
"签到打卡", bg=
'white', font=(
"microsoft yahei",
14),
-
relief=
'raise', command = lambda
:detect.check(
self.usernames))
-
self.button11.grid(row=
1, column=
0, padx=
25, pady=
10)
-
self.button12 = Button(
self.page1, width=
18, height=
2, text=
"录入新的人脸", bg=
'white', font=(
"microsoft yahei",
14),
-
relief=
'raise', command =
self.createSecondPage)
-
self.button12.grid(row=
1, column=
1, padx=
25, pady=
10)
-
self.button13 = Button(
self.page1, width=
18, height=
2, text=
"查询签到信息", bg=
'white', font=(
"microsoft yahei",
14),
-
relief=
'raise',command =
self.checkDataView)
-
self.button13.grid( row=
2, column=
0,padx=
25, pady=
10)
-
self.button14 = Button(
self.page1, width=
18, height=
2, text=
"退出系统", bg=
'gray', font=(
"microsoft yahei",
14),
-
relief=
'raise',command =
self.quitMain)
-
self.button14.grid(row=
2, column=
1,padx=
25, pady=
10)
-
-
def createSecondPage(self):
-
# self.camera = cv2.VideoCapture(0)
-
self.page1.grid_forget()
-
self.page2 = Frame(
self.root)
-
self.page2.pack()
-
Label(
self.page2, text=
'欢迎使用人脸识别系统', font=(
'粗体',
20)).pack()
-
-
# 输入姓名的文本框
-
font1 = (
'宋',
18)
-
# self.name = StringVar()
-
self.text = Entry(
self.page2, textvariable=
self.name, width=
20, font=font1).pack(side=LEFT)
-
self.name.set(
'请输入姓名')
-
-
# 确认名字的按钮
-
self.button21 = Button(
self.page2, text=
'确认', bg=
'white', font=(
"宋",
12),
-
relief=
'raise', command=lambda
:add_face.add_face(
self.name,
self.usernames))
-
self.button21.pack(side=LEFT, padx=
5, pady=
10)
-
-
# 返回按钮
-
self.button22 = Button(page2, text=
"返回", bg=
'white', font=(
"宋",
12),
-
relief=
'raise',command =
self.backFirst)
-
self.button22.pack(side=LEFT, padx=
10, pady=
10)
-
-
-
def checkDataView(self):
-
self.page3 = Frame(
self.root)
-
self.page1.grid_forget()
-
self.root.geometry(
'700x360')
-
self.page3.pack()
-
Label(
self.page3, text=
'今日签到信息', bg=
'white', fg=
'red', font=(
'宋体',
25)).pack(side=TOP, fill=
'x')
-
# 签到信息查看视图
-
self.checkDate = ttk.Treeview(
self.page3, show=
'headings', column=(
'sid',
'name',
'check_time'))
-
self.checkDate.column(
'sid', width=
100, anchor=
"center")
-
self.checkDate.column(
'name', width=
200, anchor=
"center")
-
self.checkDate.column(
'check_time', width=
300, anchor=
"center")
-
-
self.checkDate.heading(
'sid', text=
'签到序号')
-
self.checkDate.heading(
'name', text=
'名字')
-
self.checkDate.heading(
'check_time', text=
'签到时间')
-
-
# 插入数据
-
self.records =
self.mydb.query_record()
-
for i
in
self.
records:
-
self.checkDate.insert(
'',
'end', values=i)
-
-
# y滚动条
-
yscrollbar = Scrollbar(
self.page3, orient=VERTICAL, command=
self.checkDate.yview)
-
self.checkDate.configure(yscrollcommand=yscrollbar.set)
-
yscrollbar.pack(side=RIGHT, fill=Y)
-
-
self.checkDate.pack(expand=
1, fill=BOTH)
-
-
# 返回按钮
-
Button(
self.page3, width=
20, height=
2, text=
"返回", bg=
'gray', font=(
"宋",
12),
-
relief=
'raise',command =
self.backMain).pack(padx =
20, pady =
20)
-
-
def backFirst(self):
-
self.page2.pack_forget()
-
self.root.geometry(
'400x300')
-
self.page1.grid()
-
-
def backMain(self):
-
self.root.geometry(
'400x300')
-
self.page3.pack_forget()
-
self.page1.grid()
-
-
def quitMain(self):
-
sys.exit(
0)
-
-
-
if __name_
_ ==
'__main__':
-
demo = APP()
运行结果:
转载:https://blog.csdn.net/alicema1111/article/details/105315066
查看评论