Permalink
Cannot retrieve contributors at this time
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?
5001CEM/JawaraMain.py
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
402 lines (337 sloc)
20.8 KB
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
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() |