Badella

Stack_GUI.py

Dec 23rd, 2020 (edited)
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.96 KB | None | 0 0
  1. from tkinter import *
  2.  
  3. #root.geometry('500x500')
  4. '''
  5. mainFrame = LabelFrame(root,text='first frame',padx=50)
  6. mainFrame.grid(padx=10,pady=10)
  7. '''
  8. #Classes
  9. class Stack_Gui:
  10.     def __init__(self,top):
  11.         global ent
  12.         global lst
  13.         lst=list()
  14.         psh = Button(top,text='PUSH',width=20,bg='#4db8ff',command=self.validatePush).grid(row=0,column=1,padx=20,pady=10)
  15.         pp = Button(top,text='POP',width=20,bg='#4db8ff',command=self.validatePop).grid(row=0,column=2,padx=20)
  16.         pek = Button(top,text='PEAK',width=20,bg='#4db8ff',command=self.validatePeak).grid(row=0,column=3,padx=20)
  17.  
  18.         ent = Entry(top,borderwidth=5)
  19.         ent.grid(row=2,column=1,padx=20)
  20.         btn = Button(top,text='Clear',width=10,bg='#e5e5cc',height=2,command=self.clear)
  21.         btn.grid(row=3,column=1)
  22.  
  23.         lab1 = Label(top,text="",bg='#ffff80',width=10,height=5)
  24.         lab1.grid(row=2,column=2,pady=1)
  25.  
  26.         lab2 = Label(top,text="",bg='#ffff80',width=10,height=5)
  27.         lab2.grid(row=3,column=2,pady=1)
  28.  
  29.         lab3 = Label(top,text="",width=10,bg='#ffff80',height=5)
  30.         lab3.grid(row=4,column=2,pady=1)
  31.  
  32.         lab4 = Label(top,text="",bg='#ffff80',width=10,height=5)
  33.         lab4.grid(row=5,column=2,pady=1)
  34.  
  35.         lab5 = Label(top,width=10,bg='#ffff80',height=5)
  36.         lab5.grid(row=6,column=2,pady=1)
  37.         #Exit button
  38.         ext = Button(top,text='Exit',width=20,command=quit,bg='#ff471a').grid(row=7,column=3)
  39.         #Top and bottom Lables
  40.         labt = Label(top,text='<----------Top').grid(row=2,column=3)
  41.         labb = Label(top,text='<-------Bottom').grid(row=6,column=3,padx=0)
  42.  
  43.     #Push() operation
  44.     def Push1(self):
  45.         if len(lst) == 0:
  46.             #lab5.pack_forget()
  47.             lab5 = Label(top,text=ent.get(),bg='#ff944d',width=10,height=5)
  48.             lab5.grid(row=6,column=2,pady=1)
  49.             lst.append(ent.get())
  50.         elif len(lst) == 1:
  51.             lab4 = Label(top,text=ent.get(),bg='#ff944d',width=10,height=5)
  52.             lab4.grid(row=5,column=2,pady=1)
  53.             lst.append(ent.get())
  54.         elif len(lst) == 2:
  55.             lab4 = Label(top,text=ent.get(),bg='#ff944d',width=10,height=5)
  56.             lab4.grid(row=4,column=2,pady=1)
  57.             lst.append(ent.get())
  58.         elif len(lst) == 3:
  59.             lab4 = Label(top,text=ent.get(),bg='#ff944d',width=10,height=5)
  60.             lab4.grid(row=3,column=2,pady=1)
  61.             lst.append(ent.get())
  62.         else:
  63.             lab1 = Label(top,text=ent.get(),bg='#ff944d',width=10,height=5)
  64.             lab1.grid(row=2,column=2,pady=1)
  65.             lst.append(ent.get())
  66.         self.clear()
  67.  
  68.     #Pop() operation
  69.     def Pop1(self):
  70.         if len(lst) == 1:
  71.             #lab5.pack_forget()
  72.             lab5 = Label(top,text='',bg='#ffff80',width=10,height=5)
  73.             lab5.grid(row=6,column=2,pady=1)
  74.             lst.pop()
  75.         elif len(lst) == 2:
  76.             lab4 = Label(top,text='',bg='#ffff80',width=10,height=5)
  77.             lab4.grid(row=5,column=2,pady=1)
  78.             lst.pop()
  79.         elif len(lst) == 3:
  80.             lab4 = Label(top,text='',bg='#ffff80',width=10,height=5)
  81.             lab4.grid(row=4,column=2,pady=1)
  82.             lst.pop()
  83.         elif len(lst) == 4:
  84.             lab4 = Label(top,text='',bg='#ffff80',width=10,height=5)
  85.             lab4.grid(row=3,column=2,pady=1)
  86.             lst.pop()
  87.         else:
  88.             lab1 = Label(top,text='',bg='#ffff80',width=10,height=5)
  89.             lab1.grid(row=2,column=2,pady=1)
  90.             lst.pop()
  91.  
  92.     #Peak() operation
  93.     def Peak1(self):
  94.         labn = Label(top,text=lst[-1],bg='#ff944d',width=10,height=5)
  95.         labn.grid(row=4,column=3)
  96.         labn.after(5000 , lambda: labn.destroy())
  97.  
  98.     #Validator for push
  99.     def validatePush(self):
  100.         if len(lst)<5:
  101.             if (len(ent.get())==0):
  102.                 self.InvalidInput()
  103.             else:
  104.                 self.Push1()
  105.         else:
  106.             self.Full()
  107.  
  108.     #Validator for pop
  109.     def validatePop(self):
  110.         if len(lst)==0:
  111.             self.Empty()
  112.         else:
  113.             self.Pop1()
  114.  
  115.     #Validator for peak
  116.     def validatePeak(self):
  117.         if len(lst)==0:
  118.             self.Empty()
  119.         else:
  120.             self.Peak1()
  121.  
  122.     #Invalid Input
  123.     def InvalidInput(self):
  124.         full = Toplevel(bg='#8cff66')
  125.         full.title('InvalalidInput')
  126.         lab = Label(full,text="Enter any value.",fg='blue',bg='#8cff66',width=20,height=5)
  127.         lab.grid(row=1,column=1)
  128.         full.resizable(0,0)
  129.         full.after(5000 , lambda: full.destroy())
  130.         btn = Button(full,text='Exit',width=10,height=2,command=full.destroy)
  131.         btn.grid(row=2,column=2)
  132.  
  133.     #Stack Full
  134.     def Full(self):
  135.         full = Toplevel(bg='#8cff66')
  136.         full.title('Warning')
  137.         lab = Label(full,text="Stack is Full",fg='blue',bg='#8cff66',width=20,height=5)
  138.         lab.grid(row=1,column=1)
  139.         full.resizable(0,0)
  140.         full.after(5000 , lambda: full.destroy())
  141.         btn = Button(full,text='Exit',width=10,height=2,command=full.destroy)
  142.         btn.grid(row=2,column=2)
  143.  
  144.     #Stack Empty
  145.     def Empty(self):
  146.         ept = Toplevel(bg='#8cff66')
  147.         ept.title("Warning")
  148.         lab = Label(ept,text="Stack is Empyt",fg='blue',bg='#8cff66',width=20,height=5)
  149.         lab.grid(row=1,column=1)
  150.         ept.resizable(0,0)
  151.         ept.after(5000 , lambda: ept.destroy())
  152.         btn = Button(ept,text='Exit',width=10,height=2,command=ept.destroy)
  153.         btn.grid(row=2,column=2)
  154.  
  155.     #clear Entry Field
  156.     def clear(self):
  157.         ent.delete(0,END)
  158.  
  159. #if __name__ == 'main':
  160. root = Tk()
  161.  
  162. #img = PhotoImage(file="hacker.jpg")
  163. top = Frame(root,bg='#123456')
  164. top.grid()
  165. #top.create_image(20,20, anchor=NW, image=img)
  166. obj = Stack_Gui(top)
  167. root.resizable(0,0)
  168.  
  169. root.mainloop()        
Add Comment
Please, Sign In to add comment