继承和用户/密码登录问题

时间:2016-02-17 11:53:23

标签: python tkinter

目前在我的系统代码中,我似乎无法让我的系统只在一个窗口中打开。当我运行我的代码时,它会打开两个屏幕而不是主屏幕。我知道这是由于我的类的继承只是不确定需要改变什么。 (日历部分和通用骨架)

其次我想要一个用户名和密码登录,所以他们都互相依赖。我已经定义了它们中的每一个但是不能让它们一起工作所以如果用户名错误且密码正确则不会进入受保护区域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.')

如果我得到一些建议意味着很多,我非常喜欢初学者,所以你们可以帮助的任何事情都会受到赞赏

0 个答案:

没有答案