由于工作需要,最近完成了一个简单的小软件,主要用于信息的录入和查询。

程序主要使用的是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实现简单的信息录入和查询界面!相关推荐

  1. python计算机体系三层结构_Python tkinter 实现简单登陆注册 基于B/S三层体系结构,实现用户身份验证...

    Python tkinter 实现简单登陆注册 最终效果 开始界面 ​ 注册 登陆 ​ 源码 login.py # encoding=utf-8 from tkinter import * from ...

  2. window.open不重复打开同一个名称的窗口_干货满满|Ctrl键的正确打开方式

    "ctrl"是键盘中一个常用的键,全名为"control",中文意为"控制",在计算机基础中称为"控制键". 那么你知道 ...

  3. Python简单的信息录入可视化界面

    1.题目 利用Python编写一个录入学生信息(姓名.年龄.性别)的可视化窗口. 2.代码 from tkinter import * import tkinter.messagebox as mes ...

  4. 用python制作一个学生信息管理软件_python实现简单学生信息管理系统

    python简单的学生信息管理系统-文件版,供大家参考,具体内容如下 功能如下 主函数部分 增加学生信息 修改学生信息 删除学生信息 查询学生 显示所有学生的信息 将数据录入文件 读取文件数据 学习文 ...

  5. python的窗口处理模块_Python tkinter模块弹出窗口及传值回到主窗口操作详解

    本文实例讲述了Python tkinter模块弹出窗口及传值回到主窗口操作.分享给大家供大家参考,具体如下: 有些时候,我们需要使用弹出窗口,对程序的运行参数进行设置.有两种选择 一.标准窗口 如果只 ...

  6. python调用窗口_如何调用一个函数并在另一个窗口中打开?

    我用的是IDLE,但这应该足够让球滚动了.IDLE是在Windows上下载Python时随Python一起安装的IDE.您可以通过按Windows键并搜索空闲来打开它.在 这段代码很简单,但是它应该能 ...

  7. python烟花教程_干货教程:Python欠你一场浪漫烟花邂逅

    是python呀2020-10-27 20:50:16烟花由中国古代人民较早发明,常用于盛大的典礼或表演中,也在除夕夜及元宵节中燃放用来烘托节日氛围.近年来随着环境污染的加剧,一些地区已经禁止燃放烟花 ...

  8. python画布位置_如何调整tkinter画布的位置

    在我的程序中,我想创建一个锚定在屏幕左上角的tkinter画布,但画布默认位于屏幕上的另一个位置.以下是这一情况的图像: 以下是我当前的代码:#!/usr/bin/python import tkin ...

  9. python tk窗口 选择 销毁_Python tkinter - 删除其他窗口 - 已调用tk.withdraw()

    我正在编写一个小程序,在某些情况下,它会打开两个不同的文件浏览器. 起初,用户可以选择一个文件夹.如果该文件适合他,他可以关闭文件资源管理器窗口,另一个可以打开用户选择特定文件的窗口. 就像第二个文件 ...

最新文章

  1. 新手学习python的方法
  2. GDI+ 中发生一般性错误
  3. linux mysql 5.7 配置_linux下mysql5.7的安装配置
  4. C语言0xc0000142错误,第一次用c++编译器出现奇怪的报错
  5. Unity3D图形性能优化
  6. linux之vim如何快速找到第二次打开文件的指定行
  7. javascript内存泄漏调试工具mac_node.js 内存泄漏的秘密
  8. 前端学习(1804):前端调试之列表伪类
  9. sql存储过程----备份数据库
  10. mysql视频教程特密码_分享一个MySQL 密码增强插件
  11. 手机通讯录备份代码实现一
  12. Atitit常见的标准化组织与规范数量jcp ecma iso
  13. JAVA 实现《超级玛丽》游戏
  14. secureCRT 7.3.6 winxp版本
  15. 这两款好用的识别图片文字的软件app值得你们收藏
  16. unity5-GI是什么?
  17. 【复】一次流量分析经历
  18. unity2D小鸟飞过柱子小游戏
  19. 第十九章 Caché 函数大全 $INCREMENT 函数
  20. python读取图片、保存图片的方法

热门文章

  1. 微软的客户技术售前ATS,产品技术售前TSP职位
  2. 用牛顿迭代公式求 x 的立方根(c语言)
  3. Java Controller自动urlDecode的坑
  4. 一张图了解python_一张图学会python
  5. 如何访问百度网址,我根据7层协议的理解。
  6. 第一部linux手机,Linux从菜鸟到大师之天龙八部 第一部文件管理.doc
  7. 高德地图定位按钮位置显示
  8. 中国裁判网-爬虫-2018.09.28
  9. 多分类问题的precision和recall以及F1 scores的计算
  10. Spring Boot 中文乱码问题解决方法