python 数据录入窗口_干货!用Tkinter实现简单的信息录入和查询界面!
由于工作需要,最近完成了一个简单的小软件,主要用于信息的录入和查询。
程序主要使用的是Tkinter, Python 的标准 GUI 库。Tkinter相对比较简单,可以制作出精美的界面,信息的录入和查询系统在于信息保存和界面交互,tkinter刚好适用,对于比较熟悉的同学,下面的内容可以不看,直接移步到源代码:
地址:源代码github.com
适当修改也能实现调查问卷界面,生成的Excel文件也利于后续分析。
话不多说,直接上图。
界面分为四个部分,第一个是主界面,设置选择按钮——新建、查询:
第二个是新建文件界面,手动输入信息后以Excel文件保存在本地,并设置返回按钮:
第三个是查询界面,通过已输入的名字或编号查询用户信息:
第四个是添加界面,对于已经存在的用户可以在查询信息后使用添加功能添加信息:
为了区分开各个版块,这里使用不同的类进行管理。
首先,用Base类生成固定大小的界面框:
class Base():
def __init__(self, master):
self.root = master
self.root.config()
self.root.title("咨询信息记录查询系统")
self.root.geometry("1000x680")
self.root.resizable(False, False)
Mainface(self.root) #Enter Mainface
当初始化Base类的时候,一些基本参数生成,包括名称(title)、界面大小(geometry)、可伸缩性(resizable),最重要的是最后一步Mainface(self.root),Mainface类设置的是主界面代码,初始化Base类也就初始化了Mainface类,所以当我们打开软件时,直接就进入了主界面。
Mainface类主要包括两个按钮和一张背景图:
#main interface 主界面
class Mainface():
def __init__(self, master):
self.master = master
self.master.config(bg="palegoldenrod")
#generating picture 生成图片
self.Pilimage = Image.open(r"Image\background.gif")
self.image = ImageTk.PhotoImage(image=self.Pilimage)
self.mainface = Frame(self.master, width=1000, height=680, background="palegoldenrod")
self.mainface.pack()
b_record = Button(self.mainface, text="新 建", width=6, height=1, font=(r"Font\simhei.ttf", 15, "bold"), compound="center", fg="dimgray", bg="skyblue", command=self.record) #button1 for recording 按钮1
b_record.place(relx=0.3, rely=0.3, anchor=CENTER)
#过长,省去部分代码
Config设置的是界面背景,如果要使用图片做背景会比较麻烦,需要用from PIL import Image, ImageTk导入图片管理方法,再用tkinter中的Label组件放在指定位置;
此外,这里先使用了一个Frame组件,作用是先将这个Frame框放在界面框中,再将其他子组件,如Button、Entry、Text等放在Frame中,如果这些子组件需要集体移动(如全部向左移动)或销毁,那只用调整Frame框的位置或销毁即可。
在tkinter中,组件位置的摆放有三种方法,pack()、grid()和place()。三种方法均用于管理同在一个父组件下的所有组件的布局,pack 是按添加顺序排列组件,grid 是按行/列形式排列组件,place 则允许程序员指定组件的大小和位置。如代码中的self.mainface.pack()将会把Frame组件放在第一行,因为只有它一个组件;而代码b_record.place(relx=0.3, rely=0.3, anchor=CENTER)会把“新建”按钮放在Frame组件中的指定位置;后文中还会用到grid,通过设置行和列来进行组件摆放,常用于整齐的界面,如登录界面。
既然使用了Button组件,那一定少不了命令函数:
def record(self):
self.mainface.destroy() #destroy current interface
Record(self.master) #Enter Record interface
以记录函数为例,当点击按钮后,界面将会跳转到记录界面。跳转的实现事实上是先销毁当前Frame组件,再在界面中新建下一个Frame,从用户的角度来说,就实现了跳转。如上面的程序中,先用self.mainface.destroy()摧毁当前主界面,再新建下一个记录界面。
每一个界面的初始化都大同小异,这里不再赘述。需要特别说明的是文件的保存和读取,由于要生成Excel文件,所以这里用的xlwt和xlrd库,一个用来写入数据,一个用来读取数据:
写入数据:
book = xlwt.Workbook(encoding="utf-8", style_compression=0)
sheet = book.add_sheet(file_name, cell_overwrite_ok=True)
sheet.write(0, 0, "姓 名")
sheet.write(1, 0, file_name)
sheet.write(0, 1, "咨询日期")
读取数据:
xl_a = xlrd.open_workbook(self.path)
table = xl_a.sheets()[0]
table_a = copy(xl_a)
sheet = table_a.get_sheet(0)
sheet.write(num_a, 1, add_date)
写入数据主要在新建用户信息时,当完成用户信息输入后,点击保存则会在指定文件夹生成与输入名称相同的xls文件,write方法可以在指定的单元格写入指定的内容。
这里没有让用户选择文件存储位置,原因是每个用户的存储位置不同,设计查询功能时比较麻烦,如果需要用户选择文件存储位置,可以使用filedialog.asksaveasfilename(title="保存文件",filetypes=ftypes, defaultextension=".xls")方法,点击后将会弹出位置选择框。
读取数据主要在查询用户信息时,当用户输入姓名或编号后,程序能找到指定的xls文件,并将指定的内容显示在界面中,包括新增信息,以日期+内容的形式展示出来,便于查看记录。
当然,程序也有很多不完善的地方,如当添加同名文件时,后面的文件会将前面的文件覆盖,也没有修改和删除功能,只能到DataFile文件夹找到相应的文件进行修改。
而对于一些报错信息,如不输入信息就进行查询而发生错误,使用try…except…语句进行提示,防止软件闪退。
程序的大致内容就这么多,如果有什么疑问可以在评论区提问。
python 数据录入窗口_干货!用Tkinter实现简单的信息录入和查询界面!相关推荐
- python计算机体系三层结构_Python tkinter 实现简单登陆注册 基于B/S三层体系结构,实现用户身份验证...
Python tkinter 实现简单登陆注册 最终效果 开始界面 注册 登陆 源码 login.py # encoding=utf-8 from tkinter import * from ...
- window.open不重复打开同一个名称的窗口_干货满满|Ctrl键的正确打开方式
"ctrl"是键盘中一个常用的键,全名为"control",中文意为"控制",在计算机基础中称为"控制键". 那么你知道 ...
- Python简单的信息录入可视化界面
1.题目 利用Python编写一个录入学生信息(姓名.年龄.性别)的可视化窗口. 2.代码 from tkinter import * import tkinter.messagebox as mes ...
- 用python制作一个学生信息管理软件_python实现简单学生信息管理系统
python简单的学生信息管理系统-文件版,供大家参考,具体内容如下 功能如下 主函数部分 增加学生信息 修改学生信息 删除学生信息 查询学生 显示所有学生的信息 将数据录入文件 读取文件数据 学习文 ...
- python的窗口处理模块_Python tkinter模块弹出窗口及传值回到主窗口操作详解
本文实例讲述了Python tkinter模块弹出窗口及传值回到主窗口操作.分享给大家供大家参考,具体如下: 有些时候,我们需要使用弹出窗口,对程序的运行参数进行设置.有两种选择 一.标准窗口 如果只 ...
- python调用窗口_如何调用一个函数并在另一个窗口中打开?
我用的是IDLE,但这应该足够让球滚动了.IDLE是在Windows上下载Python时随Python一起安装的IDE.您可以通过按Windows键并搜索空闲来打开它.在 这段代码很简单,但是它应该能 ...
- python烟花教程_干货教程:Python欠你一场浪漫烟花邂逅
是python呀2020-10-27 20:50:16烟花由中国古代人民较早发明,常用于盛大的典礼或表演中,也在除夕夜及元宵节中燃放用来烘托节日氛围.近年来随着环境污染的加剧,一些地区已经禁止燃放烟花 ...
- python画布位置_如何调整tkinter画布的位置
在我的程序中,我想创建一个锚定在屏幕左上角的tkinter画布,但画布默认位于屏幕上的另一个位置.以下是这一情况的图像: 以下是我当前的代码:#!/usr/bin/python import tkin ...
- python tk窗口 选择 销毁_Python tkinter - 删除其他窗口 - 已调用tk.withdraw()
我正在编写一个小程序,在某些情况下,它会打开两个不同的文件浏览器. 起初,用户可以选择一个文件夹.如果该文件适合他,他可以关闭文件资源管理器窗口,另一个可以打开用户选择特定文件的窗口. 就像第二个文件 ...
最新文章
- 新手学习python的方法
- GDI+ 中发生一般性错误
- linux mysql 5.7 配置_linux下mysql5.7的安装配置
- C语言0xc0000142错误,第一次用c++编译器出现奇怪的报错
- Unity3D图形性能优化
- linux之vim如何快速找到第二次打开文件的指定行
- javascript内存泄漏调试工具mac_node.js 内存泄漏的秘密
- 前端学习(1804):前端调试之列表伪类
- sql存储过程----备份数据库
- mysql视频教程特密码_分享一个MySQL 密码增强插件
- 手机通讯录备份代码实现一
- Atitit常见的标准化组织与规范数量jcp ecma iso
- JAVA 实现《超级玛丽》游戏
- secureCRT 7.3.6 winxp版本
- 这两款好用的识别图片文字的软件app值得你们收藏
- unity5-GI是什么?
- 【复】一次流量分析经历
- unity2D小鸟飞过柱子小游戏
- 第十九章 Caché 函数大全 $INCREMENT 函数
- python读取图片、保存图片的方法