利用Python做一个简易的数据查询脚本-GUI-Tkinter
-
涉及模块
主要涉及到tkinter、pandas等,记录下这一周以来遇到的小问题 -
实现功能
读取数据存储文件、对数据表中的数据进行删减操作、存储文件、计算误差数据、设计GUI界面、自动输出问题数据、文件的封装打包
1.
第一步先设置一个简单的GUI窗口
window = tk.Tk()
window.title('******')
window.geometry('700x500')
#window.resizable(width=True,height=True)
#标签控件布局
tk.Label(window, text="*****",font=('Arial 12 bold'),width=10,height=3).place(x=25,y=50)
tk.Label(window, text="******",font=('Arial 12 bold'),width=10,height=3).place(x=25,y=150)
tk.Label(window, text="******",font=('Arial 12 bold'),width=10,height=3).place(x=25,y=250)
tk.Label(window, text="******",font=('Arial 12 bold'),width=13,height=3).place(x=15,y=350)
#Entry控件布局
entry1=tk.Entry(window)
entry2=tk.Entry(window)
entry3=tk.Entry(window)
entry4=tk.Entry(window)
entry1.place(x=150,y=70)
entry2.place(x=150,y=170)
entry3.place(x=150,y=270)
entry4.place(x=150,y=370)
tk.Button(window, text='确定', command=printInfo).place(x=500,y=300)
tk.Button(window, text='取消', command=window.quit).place(x=500,y=350)
window.mainloop()
好了,以上代码可以实现一个简单的GUI模块,形式类似于
当我点击确定时,需要调用printInfo函数,实现自己想要的目的。
2.
因为我的每一个entry都需要读取excel的地址
#输入文件所在地址
file_name1 = entry1.get()
print('地址输入正常')
# 原始数据表格
data1 = pd.read_excel(file_name1, header=1)
print('数据读取正常')
当然其中也会涉及到把处理的数据存储到excel,这里我就遇到一个问题,因为我要对excel中的每一行数据都要处理且保存,也就是说保存的过程是在不断循环的,那保存的数据就会在excel或者txt里面不断被替代,最后只保存了最后一个,虽然网上方法有很多但是都比较麻烦,所以我写了一个简便的。
file_name = entry3.get()
txt_excel=open(file_name,'w')
.
.
# 循环
print(Id[i],file=txt) # 循环内打印出第i个,并file
txt_excel.close()
这样可以将需要的数据保存到txt中或者excel中,并且保存为1列。
3.
删除不必要的数据,这里我只针对excel中的某几列删除表里的空值
columns = ['列名', '列名', '列名']
data1 = pd.read_excel(file_name, header=1)
print('数据读取正常')
data2 = data1[columns]
# 删除表格中空的单元格,并存储
data2.dropna(axis=0, how='any', inplace=True)
有兴趣的也可以百度dropna、axis=0/1、how的作用,我在这里不在一一叙述。