Advertisement
Guest User

rdt help

a guest
Dec 12th, 2018
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.40 KB | None | 0 0
  1. import sys
  2. import re
  3. from tkinter import *
  4. import tkinter.messagebox as box
  5. import tkinter.font as Font
  6. import time
  7. import calendar
  8. #from tkinter import font
  9. from tkinter import ttk
  10. def Calendar():
  11.    
  12.     def mainTimetable():
  13.         #root1 = Tk()
  14.  
  15.         #frame = Frame(root1)
  16.  
  17.         days = ["","Mon","Tue","Wed","Thur","Fri","Sat","Sun"]
  18.         hours = ["","08:00","09:00","10:00","11:00","12:00","13:00","14:00","15:00",
  19.                  "16:00","17:00","18:00"]
  20.  
  21.         class WrappedButtons:
  22.             def __init__(self, master, **kwargs):
  23.                 self.button = Button(master,font=('Courier'),fg='#333333',bg='#CCCCCC', **kwargs)
  24.                 self.name = ''
  25.  
  26.             def nameToggle(self):
  27.                 if not self.name:
  28.                     self.name = nameEntry.get()
  29.                 else:
  30.                     self.name = ''
  31.                 self.button.config(text=self.name)
  32.  
  33.         def subTimetable():
  34.             global nameEntry
  35.             popup = Toplevel()
  36.             #popup.title('Timetable')
  37.             for x in range(12):
  38.                 Label(popup,font=('Courier'),fg='#333333',bg='#CCCCCC', text=hours[x]).grid(row=x,column=0)
  39.             for x in range(8):
  40.                 Label(popup,font=('Courier'),fg='#333333',bg='#CCCCCC',text=days[x]).grid(row=0,column=x)
  41.                 if x < 7: # this avoids an extra column of buttons
  42.                     for y in range(11):
  43.                         temp = WrappedButtons(popup,width=20)
  44.                         temp.button.config(command=temp.nameToggle)
  45.                         temp.button.grid(row=y+1,column=x+1)
  46.             Label(popup,text = "Enter the name of pupil and click the slot you wish to fill/remove: ")\
  47.                 .grid(row=13,column=0,columnspan=4)
  48.  
  49.             nameEntry = Entry(popup,width=40)
  50.             nameEntry.grid(row=13,column=4,columnspan=2)
  51.  
  52.                
  53.             backButton = Button(popup,font=('Courier'),fg='#333333',bg='#CCCCCC',text='Back',command= popup.destroy)#lambda: [f() for f in[popup.destroy,ownermenu]]).grid(row=13,column=6) # Add functionality to return to user page
  54.             submitButton = Button(popup,text='Submit Data').grid(row=13,column=7)
  55.  
  56.             menubar = Menu(popup)
  57.             filemenu = Menu(menubar,tearoff=0)
  58.             filemenu.add_command(label='Home',command=lambda:[f() for f in [popup.destroy,home1]])
  59.             filemenu.add_separator()
  60.             filemenu.add_command(label='Exit',command=popup.destroy)
  61.             menubar.add_cascade(label='Page',menu=filemenu)
  62.             popup.config(menu=menubar)
  63.  
  64.             popup.configure(bg='#333333')
  65.  
  66.             #popup.overrideredirect(True)
  67.             #popup.geometry("{0}x{1}+0+0".format(popup.winfo_screenwidth(), popup.winfo_screenheight()))
  68.  
  69.         subTimetable()
  70.         #root.mainloop()
  71.  
  72.    
  73.     root = Tk()
  74.     root.title('Calendar')
  75.     root.configure(bg='#333333')
  76.     permanentFrame,newFrame = Frame(root), Frame(root)
  77.     permanentFrame.pack(side='top')
  78.     newFrame.pack(side='top')
  79.  
  80.     months = {1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31}
  81.  
  82.     lbMonths = Label(permanentFrame,text='Months: ',fg='#333333',bg='#CCCCCC')
  83.     lbMonths.pack()
  84.     dropMonths = ttk.Combobox(permanentFrame, values=list(months.keys()))
  85.     dropMonths.pack()
  86.  
  87.  
  88.     class ButtonsWrap:
  89.         def __init__(self,master,month,day, **kwargs):
  90.             self.button = Button(master,**kwargs)
  91.             self.monthInd = month-1
  92.             self.dayInd = day-1
  93.             self.toplevel = False
  94.             self.thing = None
  95.  
  96.         def popClose(self):
  97.             self.thing.destroy()
  98.             self.toplevel = False
  99.             self.thing = None
  100.  
  101.         def popup(self):
  102.             if not self.toplevel:
  103.                 self.thing = Toplevel()
  104.                 self.toplevel = True
  105.                 #Label(self.thing, command=mainTimetable).pack()
  106.                 self.popClose
  107.                 mainTimetable()
  108.                 self.thing.protocol("WM_DELETE_WINDOW",self.popClose) #Add back in when 'back' functionality is complete
  109.  
  110.  
  111.  
  112.     buttons = []
  113.  
  114.     def makeCalendar(blank):
  115.         curMonth = int(dropMonths.get())
  116.  
  117.         for i in buttons:
  118.             if i.thing:
  119.                 i.thing.destroy()
  120.         for i in newFrame.slaves():
  121.             i.destroy()
  122.  
  123.         rows = [Frame(newFrame) for i in range(5)]
  124.         [i.pack() for i in rows]
  125.  
  126.         curDay = 1
  127.  
  128.         for i in range(35):
  129.             if len(rows[0].slaves()) == 7:
  130.                 rows.pop(0)
  131.             temp = ButtonsWrap(rows[0], curMonth,curDay,text='',height=1,width=2)
  132.             temp.button.pack(side='left')
  133.             buttons.append(temp)
  134.             if curDay <= months[curMonth]:
  135.                 temp.button.config(text=curDay,command=temp.popup)
  136.                 curDay += 1
  137.  
  138.     dropMonths.bind('<<ComboboxSelected>>', makeCalendar)
  139.     menubar = Menu(root)
  140.     filemenu = Menu(menubar,tearoff=0)
  141.     filemenu.add_command(label='Home',command=lambda:[f() for f in [root.destroy,home1]])
  142.     filemenu.add_separator()
  143.     filemenu.add_command(label='Exit',command=root.destroy)
  144.     menubar.add_cascade(label='Page',menu=filemenu)
  145.     root.config(menu=menubar)
  146.  
  147.     root.overrideredirect(True)
  148.     root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(), root.winfo_screenheight()))
  149.  
  150.     root.mainloop()
  151. Calendar()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement