目前在我的系统代码中,我似乎无法让我的系统只在一个窗口中打开。当我运行我的代码时,它会打开两个屏幕而不是主屏幕。我知道这是由于我的类的继承只是不确定需要改变什么。 (日历部分和通用骨架)
其次我想要一个用户名和密码登录,所以他们都互相依赖。我已经定义了它们中的每一个但是不能让它们一起工作所以如果用户名错误且密码正确则不会进入受保护区域ect(mainmenu section)
我的代码可在此处找到 - http://textuploader.com/52jsc
我认为我的继承问题就在这里:
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()
和
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()
当前用户名/密码
#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.')
如果我得到一些建议意味着很多,我非常喜欢初学者,所以你们可以帮助的任何事情都会受到赞赏