Created
October 28, 2018 03:09
-
-
Save rsmahmud/dbc8244366c9537248e69d342d74acc8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from tkinter import * | |
from tkinter import messagebox | |
#global constants are named in ALLCAP by convention | |
global USERID, PASSWD | |
global STUDENT_NAME, STUDENT_REGI, STUDENT_SPEC, STUDENT_MOBI, STUDENT_MAIL | |
global SUPERVISER_UID, SUPERVISER_PWD | |
global SUPERVISER_NAME, SUPERVISER_REGI, SUPERVISER_SPEC, SUPERVISER_MOBI, SUPERVISER_MAIL | |
def student_login(): | |
u = USERID.get().strip() #ignore 'space' | |
p = PASSWD.get() | |
if not all([u,p]):messagebox.showerror("INFO", "Clicked on Login. Invalid Input.") | |
else: | |
messagebox.showinfo("INFO", "Data passed : {} : {}".format(u,p)) | |
#do whatever u want with USERIDname and password | |
#clear input fields | |
USERID.set('') | |
PASSWD.set('') | |
def superviser_login(): | |
u = SUPERVISER_UID.get().strip() #ignore 'space' | |
p = SUPERVISER_PWD.get() | |
if not all([u,p]):messagebox.showerror("INFO", "Clicked on Login. Invalid Input.") | |
else: | |
messagebox.showinfo("INFO", "Data passed : {} : {}".format(u,p)) | |
#do whatever u want with USERIDname and password | |
#clear input fields | |
SUPERVISER_UID.set('') | |
SUPERVISER_PWD.set('') | |
def student_reg(): | |
name = STUDENT_NAME.get().strip() | |
regi = STUDENT_REGI.get().strip() | |
spec = STUDENT_SPEC.get().strip() | |
mobi = STUDENT_MOBI.get().strip() | |
mail = STUDENT_MAIL.get().strip() | |
#validate input and write to db | |
if not all([name,regi,spec,mobi,mail]) : | |
messagebox.showerror("INFO", "Clicked on Register. Invalid Input.") | |
else: | |
messagebox.showinfo("INFO", "{} : {} : {} : {} : {}".format(name,regi,spec,mobi,mail)) | |
#clear input fields | |
STUDENT_NAME.set('') | |
STUDENT_REGI.set('') | |
STUDENT_SPEC.set('') | |
STUDENT_MOBI.set('') | |
STUDENT_MAIL.set('') | |
def superviser_reg(): | |
name = SUPERVISER_NAME.get().strip() | |
regi = SUPERVISER_REGI.get().strip() | |
spec = SUPERVISER_SPEC.get().strip() | |
mobi = SUPERVISER_MOBI.get().strip() | |
mail = SUPERVISER_MAIL.get().strip() | |
#validate input and write to db | |
if not all([name,regi,spec,mobi,mail]) : | |
messagebox.showerror("INFO", "Clicked on Register. Invalid Input.") | |
else: | |
messagebox.showinfo("INFO", "{} : {} : {} : {} : {}".format(name,regi,spec,mobi,mail)) | |
#clear input fields | |
SUPERVISER_NAME.set('') | |
SUPERVISER_REGI.set('') | |
SUPERVISER_SPEC.set('') | |
SUPERVISER_MOBI.set('') | |
SUPERVISER_MAIL.set('') | |
class App(Tk): | |
def __init__(self, *args, **kwargs): | |
Tk.__init__(self, *args, **kwargs) | |
MainMenu(self) | |
container = Frame(self) | |
container.pack(fill=BOTH) | |
container.pack(side="top") | |
self.frames = {} | |
for F in [StartPage, LoginPage, NewUserPage, SuperviserPage, InfoPage, SuperviserLoginPage, SuperviserRegPage]: | |
frame = F(container, self) | |
self.frames[F] = frame | |
frame.grid(row=0, column=0, sticky=NSEW) | |
self.show_frame(StartPage) | |
def show_frame(self, context): | |
frame = self.frames[context] | |
frame.tkraise() | |
class StartPage(Frame): | |
def __init__(self, parent, controller): | |
Frame.__init__(self, parent) | |
top_nav = Frame(self, pady=30, bg="White") | |
Button(top_nav, text="Info", width=15, bg="#2673ef", fg="White", command=lambda:controller.show_frame(InfoPage)).pack(side=RIGHT) | |
Button(top_nav, text="Superviser", width=15, bg="#2673ef", fg="White", command=lambda:controller.show_frame(SuperviserPage)).pack(side=RIGHT) | |
Button(top_nav, text="New User", width=15, bg="#2673ef", fg="White", command=lambda:controller.show_frame(NewUserPage)).pack(side=RIGHT) | |
Button(top_nav, text="Login", width=15, bg="#2673ef", fg="White", command=lambda:controller.show_frame(LoginPage)).pack(side=RIGHT) | |
top_nav.pack(side=TOP) | |
Label(self, text="Start Page", height=3,bg="#2673ef", fg="White").pack(side=TOP,fill=X) | |
class LoginPage(Frame): | |
def __init__(self, parent, controller): | |
Frame.__init__(self, parent) | |
global USERID, PASSWD | |
top_nav = Frame(self,pady=30, bg="White") | |
Button(top_nav, text="Info", width=15, bg="#2673ef", fg="White", command=lambda:controller.show_frame(InfoPage)).pack(side=RIGHT) | |
Button(top_nav, text="Superviser", width=15, bg="#2673ef", fg="White",command=lambda:controller.show_frame(SuperviserPage)).pack(side=RIGHT) | |
Button(top_nav, text="New User", width=15, bg="#2673ef", fg="White", command=lambda:controller.show_frame(NewUserPage)).pack(side=RIGHT) | |
Button(top_nav, text="Login", width=15, command=lambda:controller.show_frame(StartPage)).pack(side=RIGHT) | |
top_nav.pack(side=TOP) | |
Label(self, text="Student Login", height=3, bg="#2673ef", fg="White").pack(side=TOP,fill=X) | |
row1 = Frame(self) | |
USERID = StringVar() | |
Label(row1, text="Username", width=15).pack(side=LEFT) | |
Entry(row1, textvariable=USERID, width=22).pack(side=LEFT) | |
Label(row1, text="", width=15).pack(side=LEFT) | |
row1.pack(expand=YES) | |
row2 = Frame(self) | |
PASSWD = StringVar() | |
Label(row2, text="Password", width=15).pack(side=LEFT) | |
Entry(row2, textvariable=PASSWD, width=22,show="*").pack(side=LEFT) | |
Label(row2, text="", width=15).pack(side=LEFT) | |
row2.pack(expand=YES) | |
row3 = Frame(self) | |
Label(row3, text="", width=23).pack(side=LEFT) | |
Button(row3, text="Login", width=20, bg="#2673ef", fg="White", command=student_login).pack(side=LEFT, expand=YES) | |
Button(row3, text="Register", width=20, bg="#2673ef", fg="White", command=lambda:controller.show_frame(NewUserPage)).pack(side=LEFT, expand=YES) | |
row3.pack(expand=YES) | |
class SuperviserLoginPage(Frame): | |
def __init__(self, parent, controller): | |
Frame.__init__(self, parent) | |
global SUPERVISER_UID, SUPERVISER_PWD | |
top_nav = Frame(self,pady=30, bg="White") | |
Button(top_nav, text="Info", width=15, bg="#2673ef", fg="White", command=lambda:controller.show_frame(InfoPage)).pack(side=RIGHT) | |
Button(top_nav, text="Superviser", width=15, bg="#2673ef", fg="White",command=lambda:controller.show_frame(SuperviserPage)).pack(side=RIGHT) | |
Button(top_nav, text="New User", width=15, bg="#2673ef", fg="White", command=lambda:controller.show_frame(NewUserPage)).pack(side=RIGHT) | |
Button(top_nav, text="Login", width=15,bg="#2673ef", fg="White", command=lambda:controller.show_frame(LoginPage)).pack(side=RIGHT) | |
top_nav.pack(side=TOP) | |
Label(self, text="Superviser Login", height=3, bg="#2673ef", fg="White").pack(side=TOP,fill=X) | |
row1 = Frame(self) | |
SUPERVISER_UID = StringVar() | |
Label(row1, text="UID", width=15).pack(side=LEFT) | |
Entry(row1, textvariable=SUPERVISER_UID, width=22).pack(side=LEFT) | |
Label(row1, text="", width=15).pack(side=LEFT) | |
row1.pack(expand=YES) | |
row2 = Frame(self) | |
SUPERVISER_PWD = StringVar() | |
Label(row2, text="Password", width=15).pack(side=LEFT) | |
Entry(row2, textvariable=SUPERVISER_PWD, width=22,show="*").pack(side=LEFT) | |
Label(row2, text="", width=15).pack(side=LEFT) | |
row2.pack(expand=YES) | |
row3 = Frame(self) | |
Label(row3, text="", width=23).pack(side=LEFT) | |
Button(row3, text="Login", width=20, bg="#2673ef", fg="White", command=superviser_login).pack(side=LEFT, expand=YES) | |
Button(row3, text="Register", width=20, bg="#2673ef", fg="White", command=lambda:controller.show_frame(SuperviserRegPage)).pack(side=LEFT, expand=YES) | |
row3.pack(expand=YES) | |
class SuperviserRegPage(Frame): | |
def __init__(self, parent, controller): | |
Frame.__init__(self, parent) | |
global SUPERVISER_NAME, SUPERVISER_REGI, SUPERVISER_SPEC, SUPERVISER_MOBI, SUPERVISER_MAIL | |
top_nav = Frame(self,pady=30, bg="White") | |
Button(top_nav, text="Info", width=15, bg="#2673ef", fg="White", command=lambda:controller.show_frame(InfoPage)).pack(side=RIGHT) | |
Button(top_nav, text="Superviser", width=15, bg="#2673ef", fg="White",command=lambda:controller.show_frame(SuperviserPage)).pack(side=RIGHT) | |
Button(top_nav, text="New User", width=15,bg="#2673ef", fg="White", command=lambda:controller.show_frame(NewUserPage)).pack(side=RIGHT) | |
Button(top_nav, text="Login", width=15,bg="#2673ef", fg="White", command=lambda:controller.show_frame(LoginPage)).pack(side=RIGHT) | |
top_nav.pack(side=TOP) | |
label = Label(self, text="Superviser Registration", height=3,bg="#2673ef", fg="White").pack(side=TOP,fill=X) | |
row1 = Frame(self) | |
SUPERVISER_NAME = StringVar() | |
Label(row1, text="Name", width=15).pack(side=LEFT) | |
Entry(row1, textvariable=SUPERVISER_NAME, width=22).pack(side=LEFT) | |
row1.pack() | |
row2 = Frame(self) | |
SUPERVISER_REGI = StringVar() | |
Label(row2, text="UID", width=15).pack(side=LEFT) | |
Entry(row2, textvariable=SUPERVISER_REGI, width=22).pack(side=LEFT) | |
row2.pack() | |
row3 = Frame(self) | |
SUPERVISER_SPEC = StringVar() | |
Label(row3, text="Specialization", width=15).pack(side=LEFT) | |
Entry(row3, textvariable=SUPERVISER_SPEC, width=22).pack(side=LEFT) | |
row3.pack() | |
row4 = Frame(self) | |
SUPERVISER_MOBI = StringVar() | |
Label(row4, text="Mobile No", width=15).pack(side=LEFT) | |
Entry(row4, textvariable=SUPERVISER_MOBI, width=22).pack(side=LEFT) | |
row4.pack() | |
row5 = Frame(self) | |
SUPERVISER_MAIL = StringVar() | |
Label(row5, text="Email", width=15).pack(side=LEFT) | |
Entry(row5, textvariable=SUPERVISER_MAIL, width=22).pack(side=LEFT) | |
row5.pack() | |
row6 = Frame(self) | |
Label(row6, text="", width=15).pack(side=LEFT) | |
Button(row6, text="Register", width=20, bg="#2673ef", fg="White", command=superviser_reg).pack() | |
row6.pack() | |
class NewUserPage(Frame): | |
def __init__(self, parent, controller): | |
Frame.__init__(self, parent) | |
global STUDENT_NAME, STUDENT_REGI, STUDENT_SPEC, STUDENT_MOBI, STUDENT_MAIL | |
top_nav = Frame(self,pady=30, bg="White") | |
Button(top_nav, text="Info", width=15, bg="#2673ef", fg="White", command=lambda:controller.show_frame(InfoPage)).pack(side=RIGHT) | |
Button(top_nav, text="Superviser", width=15, bg="#2673ef", fg="White",command=lambda:controller.show_frame(SuperviserPage)).pack(side=RIGHT) | |
Button(top_nav, text="New User", width=15, command=lambda:controller.show_frame(StartPage)).pack(side=RIGHT) | |
Button(top_nav, text="Login", width=15,bg="#2673ef", fg="White", command=lambda:controller.show_frame(LoginPage)).pack(side=RIGHT) | |
top_nav.pack(side=TOP) | |
label = Label(self, text="Student Registration", height=3,bg="#2673ef", fg="White").pack(side=TOP,fill=X) | |
row1 = Frame(self) | |
STUDENT_NAME = StringVar() | |
Label(row1, text="Name", width=15).pack(side=LEFT) | |
Entry(row1, textvariable=STUDENT_NAME, width=22).pack(side=LEFT) | |
row1.pack() | |
row2 = Frame(self) | |
STUDENT_REGI = StringVar() | |
Label(row2, text="Reg. No", width=15).pack(side=LEFT) | |
Entry(row2, textvariable=STUDENT_REGI, width=22).pack(side=LEFT) | |
row2.pack() | |
row3 = Frame(self) | |
STUDENT_SPEC = StringVar() | |
Label(row3, text="Specialization", width=15).pack(side=LEFT) | |
Entry(row3, textvariable=STUDENT_SPEC, width=22).pack(side=LEFT) | |
row3.pack() | |
row4 = Frame(self) | |
STUDENT_MOBI = StringVar() | |
Label(row4, text="Mobile No", width=15).pack(side=LEFT) | |
Entry(row4, textvariable=STUDENT_MOBI, width=22).pack(side=LEFT) | |
row4.pack() | |
row5 = Frame(self) | |
STUDENT_MAIL = StringVar() | |
Label(row5, text="Email", width=15).pack(side=LEFT) | |
Entry(row5, textvariable=STUDENT_MAIL, width=22).pack(side=LEFT) | |
row5.pack() | |
row6 = Frame(self) | |
Label(row6, text="", width=15).pack(side=LEFT) | |
Button(row6, text="Register", width=20, bg="#2673ef", fg="White", command=student_reg).pack() | |
row6.pack() | |
class SuperviserPage(Frame): | |
def __init__(self, parent, controller): | |
Frame.__init__(self, parent) | |
top_nav = Frame(self,pady=30, bg="White") | |
Button(top_nav, text="Info", width=15, bg="#2673ef", fg="White", command=lambda:controller.show_frame(InfoPage)).pack(side=RIGHT) | |
Button(top_nav, text="Superviser", width=15,command=lambda:controller.show_frame(StartPage)).pack(side=RIGHT) | |
Button(top_nav, text="New User", width=15,bg="#2673ef", fg="White", command=lambda:controller.show_frame(NewUserPage)).pack(side=RIGHT) | |
Button(top_nav, text="Login", width=15,bg="#2673ef", fg="White", command=lambda:controller.show_frame(LoginPage)).pack(side=RIGHT) | |
top_nav.pack(side=TOP) | |
Label(self, text="Superviser Area", height=3, bg="#2673ef", fg="White").pack(side=TOP,fill=X) | |
row7 = Frame(self) | |
Button(row7, text="Login", width=20, bg="#2673ef", fg="White",command=lambda:controller.show_frame(SuperviserLoginPage)).pack(side=LEFT, padx=20,pady=10) | |
Button(row7, text="New User", width=20, bg="#2673ef", fg="White",command=lambda:controller.show_frame(SuperviserRegPage)).pack(side=LEFT, padx=20,pady=10) | |
row7.pack() | |
row8 = Frame(self) | |
Button(row8, text="Open Hours", width=20, bg="#2673ef", fg="White",command=lambda:controller.show_frame(InfoPage)).pack(side=LEFT, padx=20,pady=10) | |
Button(row8, text="Select Students", width=20, bg="#2673ef", fg="White").pack(side=LEFT, padx=20,pady=10) | |
row8.pack() | |
class InfoPage(Frame): | |
def __init__(self, parent, controller): | |
Frame.__init__(self, parent) | |
top_nav = Frame(self,pady=30, bg="White") | |
Button(top_nav, text="Info", width=15, command=lambda:controller.show_frame(StartPage)).pack(side=RIGHT) | |
Button(top_nav, text="Superviser", width=15,bg="#2673ef", fg="White",command=lambda:controller.show_frame(SuperviserPage)).pack(side=RIGHT) | |
Button(top_nav, text="New User", width=15,bg="#2673ef", fg="White", command=lambda:controller.show_frame(NewUserPage)).pack(side=RIGHT) | |
Button(top_nav, text="Login", width=15,bg="#2673ef", fg="White", command=lambda:controller.show_frame(LoginPage)).pack(side=RIGHT) | |
top_nav.pack(side=TOP) | |
Label(self, text="Information : Open Hours", height=3, bg="#2673ef", fg="White").pack(side=TOP,fill=X) | |
class MainMenu: | |
def __init__(self, master): | |
menubar = Menu(master) | |
filemenu = Menu(menubar, tearoff=0) | |
filemenu.add_command(label="Exit", command=master.quit) | |
menubar.add_cascade(label="File", menu=filemenu) | |
master.config(menu=menubar) | |
app = App() | |
app.title("Superviser Allocation Portal") | |
# root.geometry() will return '1x1+0+0' here | |
app.update() | |
# now app.geometry() returns valid size/placement | |
app.minsize(app.winfo_width(), 400) | |
app.mainloop() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment