Currently within my code for my system i can't seem to get my system to only open up in one window. When i run my code it opens with two screens instead of the main one. I know this is due to the inheritance of my classes just not sure what needs to be changed. (Calendar section and generic skeleton)
Secondly i want a username and password login so they both depend on each other. I have defined each of them but can't get them to both work together so if the username is wrong and password is right it wont go into the protected area ect (mainmenu section)
My code is available here - http://textuploader.com/52jsc
I think my inheritance problems lay here:
class GenericSkeleton:
#constructor creates the window
def __init__(self):#need to pass in the current object
self.GenericGui = Tk()#creating a window
self.GenericGui.title('Housing Management System')
self.GenericGui.geometry('600x450+250+30')
self.GenericGui.resizable(width = FALSE, height = FALSE)
#self.Logo = PhotoImage()
#Label(self.GenericGui,image = self.Logo).place(x=500,y=0)
#generic destroy function
def delete(self):
self.GenericGui.destroy()
and
class Data:
def __init__(self):
GenericSkeleton.__init__(self)
self.day_selected = 0
self.month_selected = 0
self.year_selected = 0
self.day_name = 0
class Calendar(GenericSkeleton):
def __init__(self,data):
self.data = data
GenericSkeleton.__init__(self)
self.cal = calendar.TextCalendar(calendar.FRIDAY)
self.year = 2016
self.month = 1
self.wid = []
self.day_selected = 1
self.month_selected = self.month
self.year_selected = self.year
self.day_name = ''
self.setup(self.year, self.month)
def clear(self):
for w in self.wid[:]:
w.grid_forget()
#w.destroy()
self.wid.remove(w)
def go_prev(self):
if self.month > 1:
self.month -= 1
else:
self.month = 12
self.year -= 1
#self.selected = (self.month, self.year)
self.clear()
self.setup(self.year, self.month)
def go_next(self):
if self.month < 12:
self.month += 1
else:
self.month = 1
self.year += 1
#self.selected = (self.month, self.year)
self.clear()
self.setup(self.year, self.month)
def selection(self, day, name):
self.day_selected = day
self.month_selected = self.month
self.year_selected = self.year
self.day_name = name
self.data.day_selected = day
self.data.month_selected = self.month
self.data.year_selected = self.year
self.data.day_name = name
#self.selected = day
self.clear()
self.setup(self.year, self.month)
def setup(self, y, m):
left = tk.Button(self.parent, text='<', command=self.go_prev)
self.wid.append(left)
left.grid(row=0, column=1)
header = tk.Label(self.parent, height=2, text='{} {}'.format(calendar.month_abbr[m], str(y)))
self.wid.append(header)
header.grid(row=0, column=2, columnspan=3)
right = tk.Button(self.parent, text='>', command=self.go_next)
self.wid.append(right)
right.grid(row=0, column=5)
days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
for num, name in enumerate(days):
t = tk.Label(self.parent, text=name[:3])
self.wid.append(t)
t.grid(row=1, column=num)
for w, week in enumerate(self.cal.monthdayscalendar(y, m), 2):
for d, day in enumerate(week):
if day:
#print(calendar.day_name[day])
b = tk.Button(self.parent, width=1, text=day, command=lambda day=day:self.selection(day, calendar.day_name[(day-1) % 7]))
self.wid.append(b)
b.grid(row=w, column=d)
sel = tk.Label(self, height=2, text='{} {} {} {}'.format(
self.day_name, calendar.month_name[self.month_selected], self.day_selected, self.year_selected))
self.wid.append(sel)
sel.grid(row=8, column=0, columnspan=7)
ok = tk.Button(self, width=5, text='OK', command='disabled')
self.wid.append(ok)
ok.grid(row=9, column=2, columnspan=3, pady=10)
def win(self,d):
cal = Calendar(win, d)
data = Data()
Current username/password
#this function is a Username validator
def EnterUsername():
UsernameAttempt = Username.get()#how to get value from entry box
#this function is a password validator
def EnterPassword():
Attempt = Password.get()#how to get value from entry box
if Attempt == 'password' and Attempt == 'username' :
self.delete()
Secret = SecretMenu()
else:
PasswordError = messagebox.showerror('Password/Username Entry','Incorrect Username or Password entered.\n Please try again.')
Would mean a lot if i got some advice, im very much a beginner so anything you guys can help with would be appreciated