信息记录通过json
#-*- coding:utf-8 -*-
#*******************************************************************
#*******************************************************************
#*************************导入模块***********************************
#*******************************************************************
#*******************************************************************
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import math
import sys
import re
import shutil
import os
import json
reload(sys)
sys.setdefaultencoding("utf-8")
#*************************定义一个全局列表*****************************
GroupData=[]
#*******************************************************************
#*******************************************************************
#***************************布局类***********************************
#*******************************************************************
#*******************************************************************
class Treeview(QTreeWidget):
def __init__(self,parent=None):
super(Treeview,self).__init__(parent)
self.setHeaderLabels([u'姓名',u'建立时间',u'其他'])
self.initUI()
def initUI(self):
path='file//data_group.json'
if os.path.isfile(path):
with open(path) as file:
dict_all = json.loads(file.read())
lent=len(dict_all)
for i in range(lent):
name=dict_all["pro_soft"+str(i)]
name=name.decode('utf-8')
self.item = QTreeWidgetItem(self, [name,str(i+1),''])
self.item.setIcon(0,QIcon('yonghu.png'))
def refresh(self):
self.clear()
path='file//data_group.json'
with open(path) as file:
dict_all = json.loads(file.read())
lent=len(dict_all)
for i in range(lent):
name=dict_all["pro_soft"+str(i)]
name=name.decode('utf-8')
self.item = QTreeWidgetItem(self, [name,str(i+1),''])
self.item.setIcon(0,QIcon('yonghu.png'))
class Listview(QTreeWidget):
def __init__(self,parent=None):
super(Listview,self).__init__()
self.setHeaderLabels([u'姓名',u'签到时间',u'其他'])
self.initUI()
def initUI(self):
path='file//data_register.json'
if os.path.isfile(path):
with open(path) as file:
dict_all = json.loads(file.read())
lent=len(dict_all)
for i in range(lent):
name=dict_all["pro_soft"+str(i)]
name=name.decode('utf-8')
item = QTreeWidgetItem(self, [name,str(i+1),''])
item.setIcon(0,QIcon('qiandao.png'))
def refresh(self):
self.clear()
path='file//data_register.json'
if os.path.isfile(path):
with open(path) as file:
dict_all = json.loads(file.read())
lent=len(dict_all)
for i in range(lent):
name=dict_all["pro_soft"+str(i)]
name=name.decode('utf-8')
item = QTreeWidgetItem(self, [name,str(i+1),''])
item.setIcon(0,QIcon('qiandao.png'))
#*******************************************************************
#*******************************************************************
#***************************功能类***********************************
#*******************************************************************
#*******************************************************************
class System(QDialog):
def __init__(self):
super(System,self).__init__()
self.setWindowFlags(Qt.Window)
self.setWindowTitle(u"签到系统")
self.initUI()
def initUI(self):
#人员信息统计并从空添加,使用列表即可。
self._tree=Treeview()
self._list=Listview()
user=QLabel(u'建立用户')
self.user=QComboBox()
userAdd=QPushButton("add")
userDel=QPushButton("del")
refresh =QPushButton(u"刷新")
saveData=QPushButton(u"保存建立的信息")
groupNameData=QLabel(u"成员信息")
displayData=QPushButton(u"显示信息")
hideData =QPushButton(u"隐藏信息")
groupNameData.setFrameStyle(QFrame.Panel|QFrame.Sunken)
path='file//data_group.json'
if os.path.isfile(path):
self.dataRead()
User=QLabel(u'用户显示')
self.User=QComboBox()
Userdata=QPushButton(u"签到")
Refresh =QPushButton(u"刷新")
SaveData=QPushButton(u"保存签到的信息")
listuser=QLabel(u"签到信息")
DisplayData=QPushButton(u"显示信息")
HideData =QPushButton(u"隐藏信息")
listuser.setFrameStyle(QFrame.Panel|QFrame.Sunken)
if os.path.isfile(path):
self.personRead()
leftlayt=QGridLayout()
leftlayt.addWidget(user,0,0)
leftlayt.addWidget(self.user,0,1,1,2)
leftlayt.addWidget(userAdd,0,3)
leftlayt.addWidget(userDel,0,4)
leftlayt.addWidget(saveData,1,1,1,2)
leftlayt.addWidget(refresh,1,3,2,2)
leftlayt.addWidget(groupNameData,2,0)
leftlayt.addWidget(displayData,2,1)
leftlayt.addWidget(hideData,2,2)
leftlayt.addWidget(self._tree,3,0,6,5)
rightlayt=QGridLayout()
rightlayt.addWidget(User,0,0)
rightlayt.addWidget(self.User,0,1,1,2)
rightlayt.addWidget(Userdata,0,3)
rightlayt.addWidget(SaveData,1,1,1,2)
rightlayt.addWidget(Refresh,1,3,2,2)
rightlayt.addWidget(listuser,2,0)
rightlayt.addWidget(DisplayData,2,1)
rightlayt.addWidget(HideData,2,2)
rightlayt.addWidget(self._list,3,0,6,4)
layt=QHBoxLayout()
layt.addLayout(leftlayt)
layt.addLayout(rightlayt)
self.setLayout(layt)
self.resize(800,550)
self.show()
userAdd.clicked.connect(self.dataAdd)
userDel.clicked.connect(self.dataDel)
refresh.clicked.connect(self._tree.refresh)
Refresh.clicked.connect(self._list.refresh)
Userdata.clicked.connect(self.register)
displayData.clicked.connect(self._tree.refresh)
hideData.clicked.connect(self._tree.clear)
DisplayData.clicked.connect(self._list.refresh)
HideData.clicked.connect(self._list.clear)
saveData.clicked.connect(self.saveFile)
SaveData.clicked.connect(self.SaveFile)
def dataAdd(self):
name,ok=QInputDialog.getText(self,u"添加页面",u"输入添加成员的姓名:",QLineEdit.Normal)
path='file//data_group.json'
name=str(name)
if ok and ok!= None:
if name.strip()!='':
if not os.path.exists(path):
f=open(path,"w")
f.write("{\n}")
f.close()
with open(path) as file:
dict_all = json.loads(file.read())
lent=len(dict_all)
dict_all["pro_soft"+str(lent)]=str(name)
with open(path, "w") as films:
end = json.dumps(dict_all, indent=4)
films.write(end)
name=name.decode('utf-8')
self.user.addItem(name)
QMessageBox.information(self,u"提示界面",(u"添加成功!"))
self.personRead()
else:
QMessageBox.information(self,u"提示界面",(u"输入为空,添加失败!"))
else:
QMessageBox.information(self,u"提示界面",(u"取消成功!"))
def dataRead(self):
path_json="file//data_group.json"
if os.path.exists (path_json):
with open(path_json) as file:
dict_all = json.loads(file.read())
lent= len(dict_all)
for i in range(0,lent):
self.user.addItem(dict_all["pro_soft"+str(i)])
def dataDel(self):
path='file//data_group.json'
index=self.user.currentIndex()
self.user.removeItem(index)
with open(path) as file:
dict_all = json.loads(file.read())
lent=len(dict_all)
list=[]
dict={}
for i in range(lent):
if i==int(index):
continue
else:
list.append(dict_all["pro_soft"+str(i)])
os.remove(path)
if not os.path.exists(path):
f=open(path,"w")
f.write("{\n}")
f.close()
self.user.clear()
for i in range(0,len(list)):
dict["pro_soft"+str(i)]=list[i]
self.user.addItem(list[i])
with open(path, "w") as films:
end = json.dumps(dict, indent=4)
films.write(end)
self.personRead()
QMessageBox.information(self,u"提示界面",(u"删除成功!"))
def personRead(self):
self.User.clear()
path_json="file//data_group.json"
if os.path.isfile (path_json):
with open(path_json) as file:
dict_all = json.loads(file.read())
lent= len(dict_all)
print lent
for i in range(0,lent):
self.User.addItem(dict_all["pro_soft"+str(i)])
def register(self):
s=1
path="file//data_register.json"
name=self.User.currentText()
name=str(name).decode('utf-8')
if not os.path.exists(path):
f=open(path,"w")
f.write("{\n}")
f.close()
with open(path) as file:
dict_all = json.loads(file.read())
lent=len(dict_all)
if lent==0:
dict_all["pro_soft"+str(lent)]=name
with open(path, "w") as films:
end = json.dumps(dict_all, indent=4)
films.write(end)
else:
for i in range(lent):
if name==dict_all["pro_soft"+str(i)]:
s=0
QMessageBox.information(self,u'提示页面',u'已签到,不能重复签到')
else:
if s==1 and i==lent-1:
dict_all["pro_soft"+str(lent)]=name
with open(path, "w") as films:
end = json.dumps(dict_all, indent=4)
films.write(end)
QMessageBox.information(self,u'提示页面',u'已签到成功')
def displayUser(self):
pass
def saveFile(self):
#利用文件保存对话框获取文件的路径名称,将存在的json,txt文件拷贝至指定位置。
filename= QFileDialog.getSaveFileName(self,"save File",
'C:\\Users\\Administrator\\Desktop',"json Files(*.json);;txt Files(*.txt)")
filename=str(filename)
if filename:
print filename.decode('utf-8')
shutil.copy('file/data_group.json',filename.decode("utf-8").encode("gbk"))
else:
QMessageBox.information(self,u'提示页面',u'已取消成功')
def SaveFile(self):
#利用文件保存对话框获取文件的路径名称,将存在的json,txt文件拷贝至指定位置。
filename = QFileDialog.getSaveFileName(self,"save File",
'C:\\Users\\Administrator\\Desktop',"json Files(*.json);;txt Files(*.txt)")
if filename:
filename=str(filename).decode('utf-8')
print filename
shutil.copy('file/data_register.json',filename.decode("utf-8").encode("gbk"))
else:
QMessageBox.information(self,u'提示页面',u'取消成功')
#*******************************************************************
#*******************************************************************
#***************************主函数***********************************
#*******************************************************************
#*******************************************************************
if __name__ == '__main__':
app = QApplication(sys.argv)
className = System()
className.show()
sys.exit(app.exec_())
信息记录通过txt
#-*- coding:utf-8 -*-
#*******************************************************************
#*******************************************************************
#*************************导入模块***********************************
#*******************************************************************
#*******************************************************************
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import math
import sys
import re
import shutil
import os
import json
reload(sys)
sys.setdefaultencoding("utf-8")
#*************************定义一个全局列表*****************************
GroupData=[]
#*******************************************************************
#*******************************************************************
#***************************布局类***********************************
#*******************************************************************
#*******************************************************************
class Treeview(QTreeWidget):
def __init__(self,parent=None):
super(Treeview,self).__init__(parent=parent)
self.setHeaderLabels([u'姓名',u'建立时间',u'其他'])
self.initUI()
def initUI(self):
path='file//data_group.txt'
if os.path.isfile(path):
f=open(path,'r')
lines = f.readlines()#
for line in lines:
name=line.decode('utf-8')
name=name.strip()
item = QTreeWidgetItem(self, [name,'',''])
item.setIcon(0,QIcon('yonghu.png'))
f.close()
def refresh(self):
self.clear()
path='file//data_group.txt'
f=open(path,'r')
lines = f.readlines()#
for line in lines:
name=line.decode('utf-8')
name=name.strip()
item = QTreeWidgetItem(self, [name,'',''])
item.setIcon(0,QIcon('yonghu.png'))
f.close()
class Listview(QTreeWidget):
def __init__(self,parent=None):
super(Listview,self).__init__(parent=parent)
self.setHeaderLabels([u'姓名',u'签到时间',u'其他'])
self.initUI()
def initUI(self):
path='file//data_register.txt'
if os.path.isfile(path):
f=open(path,'r')
lines = f.readlines()#
for line in lines:
name=line.decode('utf-8')
name=name.strip()
item = QTreeWidgetItem(self, [name,'',''])
item.setIcon(0,QIcon('qiandao.png'))
f.close()
def refresh(self):
self.clear()
path='file//data_register.txt'
f=open(path,'r')
lines = f.readlines()#
for line in lines:
name=line.decode('utf-8')
name=name.strip()
item = QTreeWidgetItem(self, [name,'',''])
item.setIcon(0,QIcon('qiandao.png'))
f.close()
#*******************************************************************
#*******************************************************************
#***************************功能类***********************************
#*******************************************************************
#*******************************************************************
class System(QDialog):
def __init__(self):
super(System,self).__init__()
self.setWindowFlags(Qt.Window)
self.setWindowTitle(u"签到系统")
self.initUI()
def initUI(self):
#人员信息统计并从空添加,使用列表即可。
self._tree=Treeview()
self._list=Listview()
#****************************左边界面***************************
user=QLabel(u'建立用户')
self.user=QComboBox()
userAdd=QPushButton("add")
userDel=QPushButton("del")
refresh =QPushButton(u"刷新")
saveData=QPushButton(u"保存建立的信息")
groupNameData=QLabel(u"成员信息")
groupNameData.setFrameStyle(QFrame.Panel|QFrame.Sunken)
displayData=QPushButton(u"显示信息")
hideData =QPushButton(u"隐藏信息")
path='file//data_group.txt'
if os.path.isfile(path):
self.dataRead()
#****************************右边界面***************************
User=QLabel(u'用户显示')
self.User=QComboBox()
Userdata=QPushButton(u"签到")
Refresh =QPushButton(u"刷新")
SaveData=QPushButton(u"保存签到的信息")
listuser=QLabel(u"签到信息")
listuser.setFrameStyle(QFrame.Panel|QFrame.Sunken)
DisplayData=QPushButton(u"显示信息")
HideData =QPushButton(u"隐藏信息")
if os.path.isfile(path):
self.personRead()
#*****************************布局**********************************
leftlayt=QGridLayout()
leftlayt.addWidget(user,0,0)
leftlayt.addWidget(self.user,0,1,1,2)
leftlayt.addWidget(userAdd,0,3)
leftlayt.addWidget(userDel,0,4)
leftlayt.addWidget(saveData,1,1,1,2)
leftlayt.addWidget(refresh,1,3,2,2)
leftlayt.addWidget(groupNameData,2,0)
leftlayt.addWidget(displayData,2,1)
leftlayt.addWidget(hideData,2,2)
leftlayt.addWidget(self._tree,3,0,6,5)
rightlayt=QGridLayout()
rightlayt.addWidget(User,0,0)
rightlayt.addWidget(self.User,0,1,1,2)
rightlayt.addWidget(Userdata,0,3)
rightlayt.addWidget(SaveData,1,1,1,2)
rightlayt.addWidget(Refresh,1,3,2,2)
rightlayt.addWidget(listuser,2,0)
rightlayt.addWidget(DisplayData,2,1)
rightlayt.addWidget(HideData,2,2)
rightlayt.addWidget(self._list,3,0,6,4)
layt=QHBoxLayout()
layt.addLayout(leftlayt)
layt.addLayout(rightlayt)
self.setLayout(layt)
self.resize(800,550)
self.show()
#********************************信号连接****************************
userAdd.clicked.connect(self.dataAdd)
userDel.clicked.connect(self.dataDel)
refresh.clicked.connect(self._tree.refresh)
Refresh.clicked.connect(self._list.refresh)
Userdata.clicked.connect(self.register)
displayData.clicked.connect(self._tree.refresh)
hideData.clicked.connect(self._tree.clear)
DisplayData.clicked.connect(self._list.refresh)
HideData.clicked.connect(self._list.clear)
saveData.clicked.connect(self.saveFile)
SaveData.clicked.connect(self.SaveFile)
def dataAdd(self):
name,ok=QInputDialog.getText(self,u"添加页面",u"输入添加成员的姓名:",QLineEdit.Normal)
name=str(name)
name=name.decode('utf-8')
if ok and ok!= None:
if name.strip()!='':
self.user.addItem(name)
GroupData.append(name)
path='file//data_group.txt'
f=open(path,'a+')
f.write(name+'\n')
f.close()
QMessageBox.information(self,u"提示界面",(u"添加成功!"))
self.personRead()
else:
QMessageBox.information(self,u"提示界面",(u"输入为空,添加失败!"))
else:
QMessageBox.information(self,u"提示界面",(u"取消成功!"))
def dataRead(self):
path='file//data_group.txt'
if os.path.isfile (path):
f=open(path,'r')
lines = f.readlines()#
for line in lines:
line=line.decode('utf-8')
self.user.addItem(line.strip())
GroupData.append(line.strip())
f.close()
def personRead(self):
self.User.clear()
path="file//data_group.txt"
if os.path.isfile (path):
f=open(path,'r')
lines = f.readlines()#
for line in lines:
line=line.decode('utf-8')
self.User.addItem(line.strip())
def register(self):
s=1
path="file//data_register.txt"
name=self.User.currentText()
name=str(name).decode('utf-8')
if not os.path.isfile(path):
f=open(path,"a+")
f.write("")
f.close()
f=open(path,'a+')
lines = f.readlines()
for line in lines:
line=line.decode('utf-8')
line=line.strip()
if name==line:
s=0
QMessageBox.information(self,u'提示页面',u'已签到,不能重复签到')
if s==1:
f=open(path,'a+')
f.write(name+'\n')
f.close()
QMessageBox.information(self,u'提示页面',u'已签到成功')
def dataDel(self):
path='file//data_group.txt'
index=self.user.currentIndex()
self.user.removeItem(index)
GroupData.remove(GroupData[index])
os.remove(path)
f=open(path,'w')
for i in range(len(GroupData)):
f.write(GroupData[i]+'\n')
f.close()
self.personRead()
QMessageBox.information(self,u"提示界面",(u"删除成功!"))
def saveFile(self):
#利用文件保存对话框获取文件的路径名称,将存在的json,txt文件拷贝至指定位置。
filename= QFileDialog.getSaveFileName(self,"save File",
'C:\\Users\\Administrator\\Desktop',"txt Files(*.txt)")
filename=str(filename)
if filename:
print filename.decode('utf-8')
shutil.copy('file/data_group.txt',filename.decode("utf-8").encode("gbk"))
else:
QMessageBox.information(self,u'提示页面',u'已取消成功')
def SaveFile(self):
#利用文件保存对话框获取文件的路径名称,将存在的json,txt文件拷贝至指定位置。
filename = QFileDialog.getSaveFileName(self,"save File",
'C:\\Users\\Administrator\\Desktop',"txt Files(*.txt)")
if filename:
filename=str(filename).decode('utf-8')
print filename
shutil.copy('file/data_register.txt',filename.decode("utf-8").encode("gbk"))
else:
QMessageBox.information(self,u'提示页面',u'取消成功')
#*******************************************************************
#*******************************************************************
#***************************主函数***********************************
#*******************************************************************
#*******************************************************************
if __name__ == '__main__':
app = QApplication(sys.argv)
className = System()
className.show()
sys.exit(app.exec_())
把两个文件放到同级目录下以便于对比,并建立一个同级目录file储存信息,
文件命名随意。图标没有附上,大家可以随意找一个。