python-tk身份证读取页面编写

业务需求:集成华视电子身份证读取sdk,通过requests库进行网络请求并解析,然后将读取到的身份证信息采用sqlite3持久化到本地

在这里插入图片描述

直接上代码,里面有注释

# -*- coding: UTF-8 -*-
from tkinter import *
import requests
# import tkinter.messagebox as msgbox
import sqlite3


# 连接设备
def linkRequest():
    analysisJson('http://127.0.0.1:19196/OpenDevice')


# 读取身份证
def readRequest():
    jsonData = analysisJson('http://127.0.0.1:19196/readcard')
    certNumber = jsonData.get("certNumber")
    partyName = jsonData.get("partyName")
    if partyName != '' and certNumber != '':
        info = partyName + ',' + certNumber
        strv2.set(info)
        listBox.insert(END, info)
        sqlSelect = 'select * from t_user where certNumber=?'
        sqlInsert = 'insert into t_user (partyName,certNumber) values (?,?)'
        sqlSelectAll = 'select * from t_user'
        try:
            cursor.execute(sqlSelect, (certNumber,))
            if cursor.fetchone() is None:
                cursor.execute(sqlInsert, (partyName, certNumber))
                conn.commit()
                print('插入成功')
            else:
                print('数据已存在')
        except Exception as e:
            conn.rollback()
            print(e)
            print('插入失败')
        finally:
            cursor.execute(sqlSelectAll)
            print(cursor.fetchall())
        #     cursor.close()
        #     conn.close()

    else:
        strv2.set('身份信息为空')


# 断开设备
def stopRequest():
    analysisJson('http://127.0.0.1:19196/CloseDevice')


# 解析json
def analysisJson(url):
    jsonData = requests.get(url).json()
    print(jsonData)
    errorMsg = jsonData.get("errorMsg")
    strv1.set(errorMsg)
    return jsonData


# 数据库
db_name = 'person.db'
conn = sqlite3.connect(db_name)
cursor = conn.cursor()
# 测试需要删除已存在的表
sqlDeleteTable = 'drop table IF EXISTS t_user'
cursor.execute(sqlDeleteTable)
# 如果表名不存在,建表
sql = 'CREATE TABLE IF NOT EXISTS t_user (id INTEGER PRIMARY KEY AUTOINCREMENT, partyName varchar(30) NOT ' \
      'NULL, certNumber varchar(30) NOT NULL) '
cursor.execute(sql)

# tk-gui
root = Tk()
root.title('咽式子v1.0')
# root.geometry('400x300')
root.minsize(400, 300)
# 权重,随着整个tk页面的大小,里面的内容也随之改变,居中
root.columnconfigure(1, weight=1)
# 内容框架,方便使用网格布局
f2 = Frame(root)
strv1 = StringVar()
strv2 = StringVar()
strv1.set('执行结果将在这里显示')
strv2.set('身份证信息将在这里显示')
# 三个按钮组件
btnLink = Button(f2, text='连接设备', command=linkRequest).grid(row=1, column=1, padx=10)
btnRead = Button(f2, text='读取身份证', command=readRequest).grid(row=1, column=2, padx=10)
btnStop = Button(f2, text='断开设备', command=stopRequest).grid(row=1, column=3, padx=10)
# 文本组件
contentLabel = Label(f2, textvariable=strv1).grid(row=2, column=2, pady=10)
contentLabel2 = Label(f2, textvariable=strv2).grid(row=3, column=2)
# list列表组件
listBox = Listbox(f2)
listBox.grid(row=4, column=2, sticky=W+E)

f2.grid(row=1, column=1, pady=10)
# 开启页面循环刷新
root.mainloop()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值