A simple GUI dataset analyzer using Python tkinter




from statistics import *
from tkinter import Tk, Entry, Label, Frame, LabelFrame, Button, StringVar 

pr_wdg = Tk()
pr_wdg.geometry('1000x800+0+0')
pr_wdg.title("Fast Statistics")

#Signature
lblfrm_info = LabelFrame(pr_wdg,
                         text = "NOTE!", font = ('arial',15,'underline'))
lblfrm_info.grid(row = 0, column = 0)
lbl_infotxt = Label(lblfrm_info,
                    text = "This is a demo app.\nBy: Mohammed Ismail",
                    font = ('aerial',25,'italic'),
                    bg = 'black', fg = 'green')

lbl_infotxt.grid(row = 1, column = 1)

#Recieving dataset
frm_anz = Frame(pr_wdg)
frm_anz.grid(row = 2, column = 0)

lbl_dset = Label(frm_anz,
                 text = "Enter dataset: ", font =('arial',15,'bold'))
lbl_dset.grid(row = 0, column = 0)

dset = StringVar()
ent_dset =  Entry(frm_anz,
                  textvariable = dset,
                  font = ('arial',15,'italic'), fg = 'white',
                  bg = 'blue', width = 50)
ent_dset.grid(row = 0, column = 1)

inst_dset = Label(frm_anz,
                 text = "Data elements are separated by commas")
inst_dset.grid(row = 0, column = 2)

#Analyzing
dset_mean = StringVar()
dset_median = StringVar()
dset_mode = StringVar()
dset_median_hi = StringVar()
dset_median_lo = StringVar()

def analyze():
    dset_list = list(map(float, dset.get().split(",")))
    dset_mean.set(mean(dset_list))
    dset_median.set(median(dset_list))
    dset_median_hi.set(median_high(dset_list))
    dset_median_lo.set(median_low(dset_list))
    try : dset_mode.set(mode(dset_list))
    except : dset_mode.set("No mode!")
    
    
  

btn_anz = Button(frm_anz,
                 text = "Analyze", bg = 'powder blue',
                 command = analyze)
btn_anz.grid(row = 2, column = 1)

#Caculate mean
lblt_mean = Label(frm_anz,
                 text = "Mean: ", font =('arial',15,'bold'))
lblt_mean.grid(row = 4, column = 0)

lbl_mean =  Label(frm_anz,
                  textvariable = dset_mean,
                  font = ('arial',15), fg = 'yellow',
                  bg = 'green', width = 25)
lbl_mean.grid(row = 4, column = 1)

#Caculate median
lblt_median = Label(frm_anz,
                 text = "Median: ", font =('arial',15,'bold'))
lblt_median.grid(row = 5, column = 0)

lbl_median =  Label(frm_anz,
                  textvariable = dset_median,
                  font = ('arial',15), fg = 'yellow',
                  bg = 'green', width = 25)
lbl_median.grid(row = 5, column = 1)

#Caculate mode
lblt_mode = Label(frm_anz,
                 text = "Mode: ", font =('arial',15,'bold'))
lblt_mode.grid(row = 6, column = 0)

lbl_mode =  Label(frm_anz,
                  textvariable = dset_mode,
                  font = ('arial',15), fg = 'yellow',
                  bg = 'green', width = 25)
lbl_mode.grid(row = 6, column = 1)

#Caculate high median
lblt_himed = Label(frm_anz,
                 text = "High median: ", font =('arial',15,'bold'))
lblt_himed.grid(row = 7, column = 0)

lbl_himed =  Label(frm_anz,
                  textvariable = dset_median_hi,
                  font = ('arial',15), fg = 'yellow',
                  bg = 'green', width = 25)
lbl_himed.grid(row = 7, column = 1)

#Caculate low median
lblt_lomed = Label(frm_anz,
                 text = "Low median: ", font =('arial',15,'bold'))
lblt_lomed .grid(row = 8, column = 0)

lbl_lomed =  Label(frm_anz,
                  textvariable = dset_median_lo,
                  font = ('arial',15), fg = 'yellow',
                  bg = 'green', width = 25)
lbl_lomed.grid(row = 8, column = 1)


#------Terminating----|
pr_wdg.mainloop()

تعليقات