Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- from Tkinter import *
- import tkMessageBox
- from ttk import *
- from vklib import VKClient, VKAuthError, VKApiError
- USERPASS_FILE='data/userpass.txt'
- vk=VKClient()
- class LoginFrame(Frame):
- def __init__(self, vk):
- Frame.__init__(self)
- self.vk=vk
- self.saved_username=''
- self.saved_password=''
- try:
- data=open(USERPASS_FILE).read().decode('utf-8')
- self.saved_username, self.saved_password=data.split(':', 1)
- except:
- pass
- self.master.title(u"Авторизация")
- self.master.iconbitmap('assets/i/ico/vk.ico')
- self.pack(padx=15, pady=15)
- # устанавливаем фокус на окно
- self.master.grab_set()
- self.init_widgets()
- def init_widgets(self):
- self.style=Style()
- self.username_lbl=Label(self, text=u'Логин:')
- self.username_lbl.grid(row=0, column=0)
- self.username_var=StringVar()
- self.username_var.set(self.saved_username)
- self.username_text=Entry(self, textvariable=self.username_var)
- self.username_text.grid(row=0, column=1)
- self.username_text.focus()
- self.username_text.bind('<Return>', self.onreturn)
- self.password_lbl=Label(self, text=u'Пароль:')
- self.password_lbl.grid(row=1, column=0, pady=5)
- self.password_var=StringVar()
- self.password_var.set(self.saved_password)
- self.password_text=Entry(self, textvariable=self.password_var, show='*')
- self.password_text.grid(row=1, column=1)
- self.password_text.bind('<Return>', self.onreturn)
- self.remember_var=IntVar()
- self.remember_btn=Checkbutton(self, text=u'Запомнить меня', var=self.remember_var)
- self.remember_btn.grid(row=2, column=1)
- # ставим галочку
- # self.remember_btn.invoke()
- self.login_btn=Button(self, text=u'Войти', command=self.login)
- self.login_btn.grid(row=3, column=0)
- self.remove_formdata_btn=Button(self, text=u'Удалить данные формы', command=self.remove_formdata)
- self.remove_formdata_btn.grid(row=3, column=1)
- self.result_lbl=Label(self, style='Result.TLabel')
- self.result_lbl.grid(row=4, columnspan=2)
- def onreturn(self, event):
- self.login()
- def login(self):
- username=self.username_var.get()
- password=self.password_var.get()
- remember=self.remember_var.get()
- try:
- self.vk.login(username, password)
- except VKAuthError, e:
- if e.type == 'invalid_client':
- self.style.configure('Result.TLabel', foreground='red')
- self.result_lbl['text']=u"Неверный логин либо пароль."
- return
- raise e
- if remember:
- with open(USERPASS_FILE, 'w') as fp:
- s=(username + ':' + password).encode('utf-8')
- fp.write(s)
- fp.close()
- self.master.destroy()
- def remove_formdata(self):
- if tkMessageBox.askyesno(u"Запрос на удаление", u"Вы уверены, что хотите удалить сохраненные логин и пароль?"):
- open(USERPASS_FILE, 'w')
- self.style.configure('Result.TLabel', foreground='darkgreen')
- self.username_var.set('')
- self.password_var.set('')
- self.result_lbl['text']=u"Данные формы удалены."
- def run(self):
- self.mainloop()
- def main():
- app=LoginFrame(vk)
- app.run()
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement