Advertisement
stuppid_bot

Untitled

Dec 1st, 2014
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.75 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. from Tkinter import *
  3. import tkMessageBox
  4. from ttk import *
  5. from vklib import VKClient, VKAuthError, VKApiError
  6.  
  7. USERPASS_FILE='data/userpass.txt'
  8.  
  9. vk=VKClient()
  10.  
  11. class LoginFrame(Frame):
  12.     def __init__(self, vk):
  13.         Frame.__init__(self)
  14.         self.vk=vk
  15.         self.saved_username=''
  16.         self.saved_password=''
  17.         try:
  18.             data=open(USERPASS_FILE).read().decode('utf-8')
  19.             self.saved_username, self.saved_password=data.split(':', 1)
  20.         except:
  21.             pass
  22.         self.master.title(u"Авторизация")
  23.         self.master.iconbitmap('assets/i/ico/vk.ico')
  24.         self.pack(padx=15, pady=15)
  25.         # устанавливаем фокус на окно
  26.         self.master.grab_set()
  27.         self.init_widgets()
  28.  
  29.     def init_widgets(self):
  30.         self.style=Style()
  31.        
  32.         self.username_lbl=Label(self, text=u'Логин:')
  33.         self.username_lbl.grid(row=0, column=0)
  34.  
  35.         self.username_var=StringVar()
  36.         self.username_var.set(self.saved_username)
  37.         self.username_text=Entry(self, textvariable=self.username_var)
  38.         self.username_text.grid(row=0, column=1)
  39.         self.username_text.focus()
  40.         self.username_text.bind('<Return>', self.onreturn)
  41.  
  42.         self.password_lbl=Label(self, text=u'Пароль:')
  43.         self.password_lbl.grid(row=1, column=0, pady=5)
  44.  
  45.         self.password_var=StringVar()
  46.         self.password_var.set(self.saved_password)
  47.         self.password_text=Entry(self, textvariable=self.password_var, show='*')
  48.         self.password_text.grid(row=1, column=1)
  49.         self.password_text.bind('<Return>', self.onreturn)
  50.  
  51.         self.remember_var=IntVar()
  52.         self.remember_btn=Checkbutton(self, text=u'Запомнить меня', var=self.remember_var)
  53.         self.remember_btn.grid(row=2, column=1)
  54.        
  55.         # ставим галочку
  56.         # self.remember_btn.invoke()
  57.        
  58.         self.login_btn=Button(self, text=u'Войти', command=self.login)
  59.         self.login_btn.grid(row=3, column=0)
  60.  
  61.         self.remove_formdata_btn=Button(self, text=u'Удалить данные формы', command=self.remove_formdata)
  62.         self.remove_formdata_btn.grid(row=3, column=1)
  63.  
  64.         self.result_lbl=Label(self, style='Result.TLabel')
  65.         self.result_lbl.grid(row=4, columnspan=2)
  66.  
  67.     def onreturn(self, event):
  68.         self.login()
  69.  
  70.     def login(self):
  71.         username=self.username_var.get()
  72.         password=self.password_var.get()
  73.         remember=self.remember_var.get()
  74.         try:
  75.             self.vk.login(username, password)
  76.         except VKAuthError, e:
  77.             if e.type == 'invalid_client':
  78.                 self.style.configure('Result.TLabel', foreground='red')
  79.                 self.result_lbl['text']=u"Неверный логин либо пароль."
  80.                 return
  81.             raise e
  82.         if remember:
  83.             with open(USERPASS_FILE, 'w') as fp:
  84.                 s=(username + ':' + password).encode('utf-8')
  85.                 fp.write(s)
  86.                 fp.close()
  87.         self.master.destroy()
  88.  
  89.     def remove_formdata(self):
  90.         if tkMessageBox.askyesno(u"Запрос на удаление", u"Вы уверены, что хотите удалить сохраненные логин и пароль?"):
  91.             open(USERPASS_FILE, 'w')
  92.             self.style.configure('Result.TLabel', foreground='darkgreen')
  93.             self.username_var.set('')
  94.             self.password_var.set('')
  95.             self.result_lbl['text']=u"Данные формы удалены."
  96.  
  97.     def run(self):
  98.         self.mainloop()  
  99.  
  100. def main():
  101.     app=LoginFrame(vk)
  102.     app.run()
  103.  
  104. if __name__ == '__main__':
  105.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement