python的GUI编程
来源:互联网 发布:网络安全检查总结报告 编辑:程序博客网 时间:2024/05/17 00:05
最近用Tkinter编写了一个GUI界面。
界面展示
各控件功能
- 输入数据框:用户将程序运行参数输入到该框中
- 选择数据文件控件:查找要分析的excel文件
- “检测分析”按钮:点击该按钮,程序开始运行,进行数据分析
- 操作日志所在的大白框:输出程序运行信息
源代码
源代码:
#coding=utf8import Tkinterimport tkFileDialogimport numpy as npfrom Tkinter import *import excelreadlibimport libbodyimport matplotlib.pyplot as pltmylist = ['NULL','NULL'] #全局变量,函数内可改变,在函数外也可用normdata = 0leveldata = 0error = 0def detectionaction(): global normdata global leveldata global error mylist[0] = float(feet.get()) text.insert(END, "\n\n\n\n$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n") text.insert(END, "\n$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n") text.insert(END, "\n\t**点击“计算”按钮**\n\n") text.insert(END, ">> 异常数据占比(%):\t\t\t "+str(mylist[0])+"\n\n") text.insert(END, ">> 数据文件路径:\t\t\t "+mylist[1].encode('utf-8')+"\n\n") if (mylist[1].endswith('.xlsx'))==0: text.insert(END, ">> 错误:\t\t\t数据文件的后缀必须为“.xlsx”\n\n") return metadata = excelreadlib.excelread(mylist[1]) text.insert(END,">> 数据为"+str(metadata.shape[0])+"个专家对"+str(metadata.shape[1]) +"个实验室的评审情况,包含了"+str(metadata.shape[0]*metadata.shape[1])+"个评审数据\n\n") K = int(1.0*mylist[0]*metadata.shape[0]*metadata.shape[1]/100) text.insert(END, ">> 异常数据个数:\t\t\t "+str(K)+"\n\n") text.insert(END, "\n\t进入分析步骤....\n\n") # 现在掌握的数据包括数据文件路径mylist[1],要给出的异常数据的个数,和原始数据矩阵 metadata,这是个ndarray类型的二维数组。 #函数getnormvsextent(metadata),输入原始数据,返回归一化的数据normdata和异常程度数据leveldata,都是二维数组 #函数getK(leveldata,k),返回K个异常数据的位置和异常程度值Klocvalue #函数modify(leveldata,Klocvalue),返回K个修正值 #函数greyred(leveldata,error)作灰度图 normdata,leveldata = libbody.getnormvsextent(metadata) text.insert(END, ">> 归一化操作....\n\n") text.insert(END, ">> 异常程度计算....\n\n") error = libbody.getK(leveldata,K) text.insert(END, ">> TopK计算....\n\n") text.insert(END, ">> 打印TopK异常值的位置和异常程度值,如下:\n\n") text.insert(END, "-------------------------------------------\n") for i in error: text.insert(END, " ||"+str(i[0])+"\t"+str(i[1])+"\t"+str(i[2])+"||\n") text.insert(END, "-------------------------------------------\n")def modifyaction(): global normdata global error text.insert(END, ">> 基于CF算法的异常值修正,结果如下:\n\n") text.insert(END, " 修正前对应位置的归一化数据:\n\n") for i in error: text.insert(END, " ||"+str(i[0])+"\t"+str(i[1])+"\t"+str(normdata[i[0]][i[1]])+"||\n") text.insert(END, "-------------------------------------------\n") text.insert(END, " 修正后对应位置的归一化数据:\n\n") ######### err = libbody.modify(normdata,error) ######### text.insert(END, "-------------------------------------------\n") for i in err: text.insert(END, " ||"+str(i[0])+"\t"+str(i[1])+"\t"+str(i[2])+"||\n") text.insert(END, "-------------------------------------------\n") def pictureaction(): global leveldata libbody.greyred(leveldata,error) text.insert(END, ">> 作图完毕,请到工作目录下查看\n") def choosefilefunc(): try: value = float(feet.get()) fileName = tkFileDialog.askopenfilename() mylist[0] = value mylist[1] = fileName bt.config(text=fileName[-25:]) #将路径按钮上显示的字替换成文件路径 except ValueError: text.insert(END, ">> 参数有误\n\n") root = Tkinter.Tk()root.title("异常数据检测工具")############3def myexit(): root.destroy()root.protocol('WM_DELETE_WINDOW', myexit)###########3feet = Tkinter.StringVar()# create and pack containerstop = Tkinter.Frame(root)bottom = Tkinter.Frame(root)top.pack(fill="x")#bottom.pack(expand="yes", fill="both")bottom.pack(expand='yes')# just use pack on buttons on toplabel = Tkinter.Label(top, text='请选择数据文件:',width = 22)label.grid(row=2,column=1,sticky=(W, E))bt = Tkinter.Button(top, text='路径',command = choosefilefunc,width = 22)bt.grid(row=2,column=2,sticky=(W, E))Tkinter.Label(top, text='异常数据占比(%):').grid(row=1,column=1,sticky=(W, E))feet_entry = Tkinter.Entry(top,width=7,textvariable=feet)feet_entry.grid(row=1,column=2, sticky=(W, E))feet_entry.focus()bt2 = Tkinter.Button(top, text ="检测分析....",command = detectionaction)bt2.grid(row=3,column=2,sticky=(W, E))bt3 = Tkinter.Button(top, text ="修正异常值....",command = modifyaction)bt3.grid(row=4,column=2,sticky=(W, E))bt4 = Tkinter.Button(top, text ="生成图像....",command = pictureaction)bt4.grid(row=5,column=2,sticky=(W, E))for child in top.winfo_children(): child.grid_configure(padx=5, pady=5)# use grid on the bottomscrollbar = Scrollbar(bottom)scrollbar.pack(side=RIGHT, fill=Y)text = Tkinter.Text(bottom, wrap=WORD, yscrollcommand=scrollbar.set,width = 44)text.pack()text.insert(END, "============================================\n\t\t 操作日志:\n============================================\n")scrollbar.config(command=text.yview)root.mainloop()
Tkinter相关的资料
- 《An introduction to tkinter》
- 《Tkinter 8.5 reference: a GUI for Python》
- 《An introduction to GUI programming with Tkinter》
- Python GUI Programming (Tkinter)
1 0
- Python的GUI编程
- python的GUI编程
- 浅尝Python 的GUI编程
- Python的GUI编程入门
- 【Python】Python 的图形界面(GUI)编程
- Python GUI编程各种实现的对比
- Python GUI编程各种实现的对比
- 使用Tkinter做python的GUI编程
- Python GUI编程各种实现的对比
- Python GUI编程各种实现的对比
- Python GUI编程各种实现的对比
- Python GUI编程各种实现的对比
- 第21节--python的GUI编程
- Python GUI编程 TKinter 的基本使用
- python编程之GUI的选择
- Python 的图形界面(GUI)编程?
- python邮件SMTP的GUI编程
- python GUI编程
- Android动态加载字节码
- 操作系统:银行家算法(避免死锁)
- ajax
- Linux 下编译Android-VLC开源播放器详解(附源码下载)
- 黑马程序员-java之HashMap,TreeMap
- python的GUI编程
- Android开发教程--onConfigurationChanged不执行的解决办法
- Oracle EBS R12.2 新特性文档
- Android VLC播放器二次开发1——程序结构分析
- Oracle菜鸟之grant授权
- 我将要出去工作了
- Android Studio使用jni、so库
- Android VLC播放器二次开发2——CPU类型检查+界面初始化
- 通讯类