Skip to content
Permalink
main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
import tkinter as tk
from PIL import ImageTk, Image
import jawaraSQL
class Main:
def __init__(self):
self.master = tk.Tk()
self.master.wm_title("Jawara")
self.master.geometry("1000x500")
self.mainContainer = tk.Frame(self.master, bg = "#c3c3c3")
self.mainContainer.grid(row = 0, column = 1)
self.sidePanelFrame = tk.Frame(self.master, bg = "#c3c3c3")
self.sidePanelFrame.grid(row = 0, column = 0)
self.frames = {}
self.CreateLoginScreen()
self.CreatePlantOperatorSidePanel()
self.CreatePlantManagerSidePanel()
self.CreateProductEngineerSidePanel()
self.CreateAccessoriesProductionOperativeSidePanel()
self.CreateAccessoriesProductionManagerSidePanel()
self.CreateMachineStatusScreen()
self.CreateScheduleScreen()
self.CreateJobPreparationScreen()
self.CreateOperatorTimetableScreen()
self.CreateGenerateReportScreen()
self.CreateProductLineInfoScreen()
self.CreateDesignSpecScreen()
self.CreateManufacturingInstructionsScreen()
self.CreateMaterialInfoScreen()
self.CreateLogOutScreen()
self.RaiseLogin()
def CreatePlantOperatorSidePanel(self):
self.sideFrame = tk.Frame(self.sidePanelFrame)
self.sideFrame.config(bg = "#c3c3c3")
self.SidePanelButton("Dashboard", self.RaiseDashboard, 0)
self.SidePanelButton("Machine Status", self.RaiseMachineStatus, 1)
self.SidePanelButton("Schedule", self.RaiseSchedule, 2)
#self.SidePanelButton("Company Meeting", self.RaiseCompanyMeeting, 3)
#self.SidePanelButton("Latest Events", self.LatestEvents, 4)
self.SidePanelButton("Log out", self.RaiseLogOut, 5)
self.frames["POSide"] = self.sideFrame
def CreatePlantManagerSidePanel(self):
self.sideFrame = tk.Frame(self.sidePanelFrame)
self.sideFrame.config(bg = "#c3c3c3")
self.SidePanelButton("Dashboard", self.RaiseDashboard, 0)
self.SidePanelButton("Machine Status", self.RaiseMachineStatus, 1)
self.SidePanelButton("Operator Timetable", self.RaiseOperatorTimetable, 2)
#self.SidePanelButton("Company Meeting", self.RaiseCompanyMeeting, 3)
#self.SidePanelButton("Latest Events", self.LatestEvents, 4)
self.SidePanelButton("Log out", self.RaiseLogOut, 5)
self.frames["PMSide"] = self.sideFrame
def CreateProductEngineerSidePanel(self):
self.sideFrame = tk.Frame(self.sidePanelFrame)
self.sideFrame.config(bg = "#c3c3c3")
self.SidePanelButton("Dashboard", self.RaiseDashboard, 0)
self.SidePanelButton("Product Line Info", self.RaiseProductLineInfo, 1)
self.SidePanelButton("Design Spec", self.RaiseDesignSpec, 2)
self.SidePanelButton("Manufacturing Info", self.RaiseManufacturingInstructions, 3)
self.SidePanelButton("Generate Report", self.RaiseGenerateReport, 4)
#self.SidePanelButton("Company Meeting", self.RaiseCompanyMeeting, 5)
#self.SidePanelButton("Latest Events", self.LatestEvents, 6)
self.SidePanelButton("Log out", self.RaiseLogOut, 7)
self.frames["PESide"] = self.sideFrame
def CreateAccessoriesProductionOperativeSidePanel(self):
self.sideFrame = tk.Frame(self.sidePanelFrame)
self.sideFrame.config(bg = "#c3c3c3")
self.SidePanelButton("Dashboard", self.RaiseDashboard, 0)
self.SidePanelButton("Design Spec", self.RaiseDesignSpec, 1)
self.SidePanelButton("Material Info", self.RaiseMaterialInfo, 2)
#self.SidePanelButton("Company Meeting", self.RaiseCompanyMeeting, 3)
#self.SidePanelButton("Latest Events", self.LatestEvents, 4)
self.SidePanelButton("Log out", self.RaiseLogOut, 5)
self.frames["APOSide"] = self.sideFrame
def CreateAccessoriesProductionManagerSidePanel(self):
self.sideFrame = tk.Frame(self.sidePanelFrame)
self.sideFrame.config(bg = "#c3c3c3")
self.SidePanelButton("Dashboard", self.RaiseDashboard, 0)
self.SidePanelButton("Manufacturing Info", self.RaiseManufacturingInstructions, 1)
self.SidePanelButton("Machine Status", self.RaiseMachineStatus, 2)
self.SidePanelButton("Schedule", self.RaiseSchedule, 3)
self.SidePanelButton("Operator Timetable", self.RaiseOperatorTimetable, 4)
self.SidePanelButton("Material Info", self.RaiseMaterialInfo, 5)
self.SidePanelButton("Generate Report", self.RaiseGenerateReport, 6)
#self.SidePanelButton("Company Meeting", self.RaiseCompanyMeeting, 7)
#self.SidePanelButton("Latest Events", self.LatestEvents, 8)
self.SidePanelButton("Log out", self.RaiseLogOut, 9)
self.frames["APMSide"] = self.sideFrame
def CreateDashboardScreen(self, jobTitleMsg, jobImg):
self.DashboardFrame = tk.Frame(self.mainContainer)
self.DashboardFrame.config(bg = "#AAC9DD")
mainTitle = tk.Label(self.DashboardFrame, text = "Dashboard", bg = "#AAC9DD")
mainTitle.grid(row = 1, column = 0, padx = 100, pady = 15)
personalisedMessage = tk.Label(self.DashboardFrame, text = jobTitleMsg, bg = "#AAC9DD")
personalisedMessage.grid(row = 2, column = 0, padx = 100, pady = 15)
self.AddImage(self.DashboardFrame, jobImg, 3, 0)
box = tk.Label(self.DashboardFrame, text = "", bg = "#AAC9DD")
box.grid(row = 4, column = 0, padx = 100, pady = 15)
self.frames["Dashboard"] = self.DashboardFrame
def CreateMachineStatusScreen(self):
self.MachineStatusFrame = tk.Frame(self.mainContainer)
self.MachineStatusFrame.config(bg = "#AAC9DD")
mainTitle = tk.Label(self.MachineStatusFrame, text = "Machine Status", bg = "#AAC9DD")
mainTitle.grid(row = 1, column = 0, padx = 100, pady = 30)
self.frames["MachineStatus"] = self.MachineStatusFrame
def CreateScheduleScreen(self):
self.ScheduleFrame = tk.Frame(self.mainContainer)
self.ScheduleFrame.config(bg = "#AAC9DD")
mainTitle = tk.Label(self.ScheduleFrame, text = "Schedule", bg = "#AAC9DD")
mainTitle.grid(row = 1, column = 0, padx = 100, pady = 30)
self.frames["Schedule"] = self.ScheduleFrame
def CreateJobPreparationScreen(self):
self.JobPreparationFrame = tk.Frame(self.mainContainer)
self.JobPreparationFrame.config(bg = "#AAC9DD")
mainTitle = tk.Label(self.JobPreparationFrame, text = "Job Preparation", bg = "#AAC9DD")
mainTitle.grid(row = 1, column = 0, padx = 100, pady = 30)
self.frames["JobPreparation"] = self.JobPreparationFrame
def CreateOperatorTimetableScreen(self):
self.OperatorTimetableFrame = tk.Frame(self.mainContainer)
self.OperatorTimetableFrame.config(bg = "#AAC9DD")
mainTitle = tk.Label(self.OperatorTimetableFrame, text = "Operator Timetable", bg = "#AAC9DD")
mainTitle.grid(row = 1, column = 0,columnspan = 7, padx = 100, pady = 30)
self.GridMaker(self.OperatorTimetableFrame, ["","Operator 1", "Operator 2", "Operator 3", "Operator 4", "Operator 5", "Operator 6"], 2, 0)
self.GridMaker(self.OperatorTimetableFrame, ["Monday","Task", "Task", "Task", "Task", "Task", "Task"], 3, 0)
self.GridMaker(self.OperatorTimetableFrame, ["Tuesday","Task", "Task", "Task", "Task", "Task", "Task"], 4, 0)
self.GridMaker(self.OperatorTimetableFrame, ["Wednesday","Task", "Task", "Task", "Task", "Task", "Task"], 5, 0)
self.GridMaker(self.OperatorTimetableFrame, ["Thursday","Task", "Task", "Task", "Task", "Task", "Task"], 6, 0)
self.GridMaker(self.OperatorTimetableFrame, ["Friday","Task", "Task", "Task", "Task", "Task", "Task"], 7, 0)
self.frames["OperatorTimetable"] = self.OperatorTimetableFrame
def CreateGenerateReportScreen(self):
self.GenerateReportFrame = tk.Frame(self.mainContainer)
self.GenerateReportFrame.config(bg = "#AAC9DD")
mainTitle = tk.Label(self.GenerateReportFrame, text = "Generate Report", bg = "#AAC9DD")
mainTitle.grid(row = 1, column = 0, padx = 100, pady = 30)
self.frames["GenerateReport"] = self.GenerateReportFrame
def CreateProductLineInfoScreen(self):
self.ProductLineInfoFrame = tk.Frame(self.mainContainer)
self.ProductLineInfoFrame.config(bg = "#AAC9DD")
mainTitle = tk.Label(self.ProductLineInfoFrame, text = "Product Line Info", bg = "#AAC9DD")
mainTitle.grid(row = 1, column = 0, columnspan = 5, padx = 25, pady = 15)
newProductSubheading = tk.Label(self.ProductLineInfoFrame, text = "New Products:", bg = "#AAC9DD")
newProductSubheading.grid(row = 2, column = 0, padx = 25, pady = 5)
self.AddMultiImage(self.ProductLineInfoFrame, ["Product1.jfif", "Product2.jfif", "Product3.jfif", "Product4.jfif", "Product5.jfif"], 3)
self.ProductNum(self.ProductLineInfoFrame, 4, ["Product 1", "Product 2", "Product 3", "Product 4", "Product 5"])
availableProductSubheading = tk.Label(self.ProductLineInfoFrame, text = "Available Products:", bg = "#AAC9DD")
availableProductSubheading.grid(row = 5, column = 0, padx = 25, pady = 5)
self.AddMultiImage(self.ProductLineInfoFrame, ["Product6.jfif", "Product7.jpg", "Product8.jfif", "Product9.png", "Product10.jfif"], 6)
self.ProductNum(self.ProductLineInfoFrame, 7, ["Product 1", "Product 2", "Product 3", "Product 4", "Product 5"])
self.frames["ProductLineInfo"] = self.ProductLineInfoFrame
def CreateDesignSpecScreen(self):
self.DesignSpecFrame = tk.Frame(self.mainContainer)
self.DesignSpecFrame.config(bg = "#AAC9DD")
mainTitle = tk.Label(self.DesignSpecFrame, text = "Design Specification", bg = "#AAC9DD")
mainTitle.grid(row = 1, column = 0, padx = 100, pady = 30)
self.frames["DesignSpec"] = self.DesignSpecFrame
def CreateManufacturingInstructionsScreen(self):
self.ManufacturingInstructionsFrame = tk.Frame(self.mainContainer)
self.ManufacturingInstructionsFrame.config(bg = "#AAC9DD")
mainTitle = tk.Label(self.ManufacturingInstructionsFrame, text = "Manufacturing Information", bg = "#AAC9DD")
mainTitle.grid(row = 1, column = 0, columnspan = 5, padx = 25, pady = 30)
TechnicalDrawingsSubheading = tk.Label(self.ManufacturingInstructionsFrame, text = "TechnicalDrawings:", bg = "#AAC9DD")
TechnicalDrawingsSubheading.grid(row = 2, column = 0, padx = 15, pady = 5)
self.AddMultiImage(self.ManufacturingInstructionsFrame, ["TechnicalD1.jfif", "TechnicalD2.jfif", "TechnicalD3.jfif", "TechnicalD4.jfif", "TechnicalD5.jfif"], 3)
self.ProductNum(self.ManufacturingInstructionsFrame, 4, ["Model 1", "Model 2", "Model 3", "Model 4", "Model 5"])
ManufacturingInfoSubheading = tk.Label(self.ManufacturingInstructionsFrame, text = "Manufacturing Instructions:", bg = "#AAC9DD")
ManufacturingInfoSubheading.grid(row = 5, column = 0, padx = 15, pady = 5)
manufactInst = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum
dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Facilisis
gravida neque convallis a cras semper auctor neque vitae. A arcu cursus vitae congue mauris rhoncus aenean vel. Cursus sit amet dictum sit amet. Feugiat
scelerisque varius morbi enim nunc faucibus a pellentesque. Amet purus gravida quis blandit turpis. Diam maecenas ultricies mi eget mauris pharetra et
ultrices neque. Consequat nisl vel pretium lectus quam. Cras fermentum odio eu feugiat pretium nibh. Eu consequat ac felis donec et odio pellentesque.
Eget mi proin sed libero enim sed. Aenean euismod elementum nisi quis.
A diam sollicitudin tempor id. Est pellentesque elit ullamcorper dignissim cras tincidunt. Sed felis eget velit aliquet sagittis id consectetur purus
ut. Penatibus et magnis dis parturient montes nascetur ridiculus mus. Elit ut aliquam purus sit amet luctus. Habitant morbi tristique senectus et netus
et malesuada. Vivamus arcu felis bibendum ut tristique et egestas quis. Sed vulputate mi sit amet mauris commodo quis imperdiet massa. Dictum sit amet
justo donec enim. Fermentum odio eu feugiat pretium nibh ipsum consequat nisl. Mauris a diam maecenas sed enim ut sem viverra. Nulla facilisi morbi
tempus iaculis urna id volutpat lacus laoreet. Nulla pharetra diam sit amet nisl suscipit adipiscing bibendum. Mattis molestie a iaculis at erat. Id
faucibus nisl tincidunt eget. Ac orci phasellus egestas tellus rutrum tellus pellentesque eu tincidunt. Metus aliquam eleifend mi in nulla posuere. In
mollis nunc sed id semper risus in hendrerit. Molestie at elementum eu facilisis sed. Amet cursus sit amet dictum."""
ManufacturingInstructions = tk.Label(self.ManufacturingInstructionsFrame, text = manufactInst, bg = "#AAC9DD")
ManufacturingInstructions.grid(row = 6, column = 0, columnspan = 5, padx = 15, pady = 5)
self.frames["ManufacturingInstructions"] = self.ManufacturingInstructionsFrame
def CreateMaterialInfoScreen(self):
self.MaterialInfoFrame = tk.Frame(self.mainContainer)
self.MaterialInfoFrame.config(bg = "#AAC9DD")
mainTitle = tk.Label(self.MaterialInfoFrame, text = "Material Info", bg = "#AAC9DD")
mainTitle.grid(row = 1, column = 0, padx = 100, pady = 30)
self.frames["MaterialInfo"] = self.MaterialInfoFrame
def CreateLoginScreen(self):
self.LoginFrame = tk.Frame(self.mainContainer)
self.LoginFrame.config(bg = "#AAC9DD")
titleLabel = tk.Label(self.LoginFrame, text = "Login Screen", bg = "#AAC9DD")
titleLabel.grid(row = 0, padx = 100, pady = 30, columnspan = 2)
userLabel = tk.Label(self.LoginFrame, text = "Username", bg = "#AAC9DD")
userLabel.grid(row = 1, column = 0)
self.userEntry = tk.Entry(self.LoginFrame)
self.userEntry.grid(row = 1, column = 1)
passwordLabel = tk.Label(self.LoginFrame, text = "Password", bg = "#AAC9DD")
passwordLabel.grid(row = 2, column = 0)
self.passwordEntry = tk.Entry(self.LoginFrame)
self.passwordEntry.grid(row = 2, column = 1)
enterButton = tk.Button(self.LoginFrame, text ="Login", command = self.ValidateUser)
enterButton.grid(row = 3, column = 0)
self.infoLabel = tk.Label(self.LoginFrame, text = "", fg = "red", bg = "#AAC9DD")
self.infoLabel.grid(row = 4, column = 0)
self.frames["Login"] = self.LoginFrame
def CreateLogOutScreen(self):
self.logOutFrame = tk.Frame(self.mainContainer)
self.logOutFrame.config(bg = "#AAC9DD")
logOutButton = tk.Button(self.logOutFrame, text = "logOut", command = self.LogOut)
logOutButton.grid(row = 0, column = 0, padx = 20, pady = 20)
self.frames["LogOut"] = self.logOutFrame
def ValidateUser(self):
self.username = self.userEntry.get()
self.password = self.passwordEntry.get()
valid = jawaraSQL.CheckLogin(self.username, self.password)
self.userEntry.delete(0,"end")
self.passwordEntry.delete(0,"end")
if valid:
job = jawaraSQL.CheckJob(self.username)
if job == ('PlantOperator',):
self.sideFrame.grid(row = 0, column = 0)
self.CreateDashboardScreen("Welcome Plant Operator", "PlantOP.jfif")
self.RaisePOSide()
self.RaiseDashboard()
elif job == ('PlantManager',):
self.sideFrame.grid(row = 0, column = 0)
self.CreateDashboardScreen("Welcome Plant Manager", "PlantM.jfif")
self.RaisePMSide()
self.RaiseDashboard()
elif job == ('ProductEngineer',):
self.sideFrame.grid(row = 0, column = 0)
self.CreateDashboardScreen("Welcome Product Engineer", "ProductE.jfif")
self.RaisePESide()
self.RaiseDashboard()
elif job == ('AccessoriesProductionOperative',):
self.sideFrame.grid(row = 0, column = 0)
self.CreateDashboardScreen("Welcome Accessories Production Operative", "AccessoriesPO.jfif")
self.RaiseAPOSide()
self.RaiseDashboard()
elif job == ('AccessoriesProductionManager',):
self.sideFrame.grid(row = 0, column = 0)
self.CreateDashboardScreen("Welcome Accessories Production Manager", "AccessoriesPM.jpg")
self.RaiseAPMSide()
self.RaiseDashboard()
else:
self.infoLabel = tk.Label(self.LoginFrame, text = "INCORRECT", fg = "red", bg = "#AAC9DD")
def LogOut(self):
for widget in self.sidePanelFrame.winfo_children():
widget.grid_forget()
self.FrameToRaise = self.frames["Login"]
self.RaiseFrame()
def RaiseFrame(self):
for widget in self.mainContainer.winfo_children():
widget.grid_forget()
self.FrameToRaise.grid(row = 0, column = 0, sticky = "nesw")
self.FrameToRaise.tkraise()
def RaiseSideFrame(self):
for widget in self.sidePanelFrame.winfo_children():
widget.grid_forget()
self.FrameToRaise.grid(row = 0, column = 0, sticky = "nesw")
self.FrameToRaise.tkraise()
def RaiseDashboard(self):
self.FrameToRaise = self.frames["Dashboard"]
self.RaiseFrame()
def RaiseLogin(self):
self.FrameToRaise = self.frames["Login"]
self.RaiseFrame()
def RaisePOSide(self):
self.FrameToRaise = self.frames["POSide"]
self.RaiseSideFrame()
def RaisePMSide(self):
self.FrameToRaise = self.frames["PMSide"]
self.RaiseSideFrame()
def RaisePESide(self):
self.FrameToRaise = self.frames["PESide"]
self.RaiseSideFrame()
def RaiseAPOSide(self):
self.FrameToRaise = self.frames["APOSide"]
self.RaiseSideFrame()
def RaiseAPMSide(self):
self.FrameToRaise = self.frames["APMSide"]
self.RaiseSideFrame()
def RaiseMachineStatus(self):
self.FrameToRaise = self.frames["MachineStatus"]
self.RaiseFrame()
def RaiseSchedule(self):
self.FrameToRaise = self.frames["Schedule"]
self.RaiseFrame()
def RaiseJobPreparation(self):
self.FrameToRaise = self.frames["JobPreparation"]
self.RaiseFrame()
def RaiseOperatorTimetable(self):
self.FrameToRaise = self.frames["OperatorTimetable"]
self.RaiseFrame()
def RaiseGenerateReport(self):
self.FrameToRaise = self.frames["GenerateReport"]
self.RaiseFrame()
def RaiseProductLineInfo(self):
self.FrameToRaise = self.frames["ProductLineInfo"]
self.RaiseFrame()
def RaiseDesignSpec(self):
self.FrameToRaise = self.frames["DesignSpec"]
self.RaiseFrame()
def RaiseManufacturingInstructions(self):
self.FrameToRaise = self.frames["ManufacturingInstructions"]
self.RaiseFrame()
def RaiseMaterialInfo(self):
self.FrameToRaise = self.frames["MaterialInfo"]
self.RaiseFrame()
def RaiseLogOut(self):
self.FrameToRaise = self.frames["LogOut"]
self.RaiseFrame()
def AddImage(self,frame, path, rowNum, colNum):
img = ImageTk.PhotoImage(Image.open(path).resize((150, 150)))
Product1Image = tk.Label(frame, image = img)
Product1Image.photo = img
Product1Image.grid(row = rowNum, column = colNum)
def ProductNum(self,frame, rowNum, txt):
col = 0
for i in txt:
Product = tk.Label(frame, text = i, bg = "#AAC9DD")
Product.grid(row = rowNum, column = col, padx = 50, pady = 5)
col += 1
def AddMultiImage(self, frame, path, row):
col = 0
for i in path:
self.AddImage(frame, i, row, col)
col += 1
def SidePanelButton(self, txt, cmnd, rowNum):
button = tk.Button(self.sideFrame, text = txt, command = cmnd, height = 2, width = 15)
button.grid(row = rowNum, column = 0, padx = 10, pady = 10)
def GridMaker(self,frame, txt, rowNum, col):
for i in txt:
cell = tk.Button(frame, text = i, height = 2, width = 15)
cell.grid(row = rowNum, column = col)
col += 1
app = Main()