#!/usr/bin/env python
# -*- coding: utf-8 -*-
from Tkinter import *
import ttk
import tkMessageBox
from random import *
import string
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email_config import *
import re
""" Funcion para enviar correo se le pasara solo el mensaje del body
Por seguridad los datos con los que accede la aplicacion al servidor
de correo estan en el archivo email_config
"""
def email(a):
fromaddr = data_fromaddr
toaddr = "pablohasir@gmail.com"
msg = MIMEMultipart()
msg['Subject'] = "Registro Correcto"
body = a
msg.attach(MIMEText(body, 'plain'))
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
#server.ehlo()
server.login(fromaddr, data_email_password)
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
"""Funcion que verifica los siguientes casos:
Campos obligatorios
Contraseña que sea igual a la contrasena
Captcha Correcto
Numero de telefono respecta parametro EN PRUEBAS !!!!!!!!!!!!!!!!!
"""
def check_email(a):
addressToVerify =a
match = re.match('^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$', addressToVerify)
if match == None:
print "correo invalido"
tkMessageBox.showerror(title = "Correo Invalido", message = "Introduzca un correo válido")
else:
return 0
def check_reg():
#global data_telefonox
data_telefonox=""
data_telefonox = data_telefono.get()
data_correox=""
data_correox = data_correo.get()
if data_nombre.get() and data_dni.get() and data_telefono.get() and data_direccion.get() and data_correo.get() and data_contrasena.get() and data_contrasenarep.get() and data_usuario.get() and data_telefono.get() and data_captchar.get():
#data_numberx=data_telefono.get()
#print data_numberx
#print captchar_code
#print data_captchar.get()
if len(data_telefono.get()) == 9 and data_telefonox.isdigit():
if check_email(data_correox) == 0:
if data_contrasena.get() == data_contrasenarep.get():
if data_captchar.get() == captchar_code:
#print "codigo correcto"
mensaje="Te acabas de registrar con el usuario: " + str(data_usuario.get()) + "\n" + "Felicidades ya puede usar nuestro software."
email(mensaje)
ventanareg.destroy()
tkMessageBox.showinfo(title = "Registro Correcto", message = "Se ha registrado correctamente, recibirá un correo correo.")
else:
#print "codigo incorrecto"
tkMessageBox.showerror(title = "Captchar Incorrecto", message = "Complete el captchar correctamente.")
else:
tkMessageBox.showerror(title = "Error contraseña !!", message = "Confirme su contraseña correctamente.")
else:
print ""
else:
tkMessageBox.showerror(title = "Error Telefono", message = "Introduzca un número de teléfono válido.")
else:
tkMessageBox.showerror(title = "Error Registro", message = "Complete todos los campos obligatorios.")
def captch():
min_char = 8
max_char = 12
allchar = string.ascii_letters + string.digits
captchar_text= "".join(choice(allchar) for x in range(randint(min_char, max_char)))
return captchar_text
def check_captch():
if data_captchar.get() == captchar:
# the user entered data in the mandatory entry: proceed to nex
print("next step")
else:
tkMessageBox.showerror(title = "Error Registro", message = "Complete todos los campos obligatorios.")
def registrarse():
global ventanareg
global data_nombre
global data_apellido1
global data_apellido2
global data_dni
global data_telefono
global data_direccion
global data_usuario
global data_correo
global data_contrasena
global data_contrasenarep
global data_captchar
global captchar_code
captchar_mensaje=""
ventanareg = Tk()
ventanareg.title("Registro")
ventanareg.geometry("300x300")
ventanareg.resizable(width=FALSE, height=FALSE)
nombre = Label(ventanareg,text="Nombre: ")
nombre_required = Label(ventanareg,text="*")
nombre.grid(column=0, row=0)
nombre_required.grid(column=3, row=0)
apellido1 = Label(ventanareg,text="Apellido1: ")
apellido1.grid(column=0, row=1)
apellido2 = Label(ventanareg,text="Apellido2: ")
apellido2.grid(column=0, row=2)
dni = Label(ventanareg,text="DNI: ")
dni_required = Label(ventanareg,text="*")
dni.grid(column=0, row=3)
dni_required.grid(column=3, row=3)
telefono = Label(ventanareg,text="Telefono: ")
telefono_required = Label(ventanareg,text="*")
telefono.grid(column=0, row=4)
telefono_required.grid(column=3, row=4)
direccion = Label(ventanareg,text="Dirección: ")
direccion_required = Label(ventanareg,text="*")
direccion.grid(column=0, row=5)
direccion_required.grid(column=3, row=5)
correo = Label(ventanareg,text="Correo: ")
correo_required = Label(ventanareg,text="*")
correo.grid(column=0, row=6)
correo_required.grid(column=3, row=6)
usuario = Label(ventanareg,text="Usuario: ")
usuario_required = Label(ventanareg,text="*")
usuario.grid(column=0, row=7)
usuario_required.grid(column=3, row=7)
contrasena = Label(ventanareg,text="Contraseña: ")
contrasena_required = Label(ventanareg,text="*")
contrasena.grid(column=0, row=8)
contrasena_required.grid(column=3, row=8)
contrasenarep = Label(ventanareg,text="Repetir contraseña: ")
contrasenarep_required = Label(ventanareg,text="*")
contrasenarep.grid(column=0, row=9)
contrasenarep_required.grid(column=3, row=9)
data_nombre = Entry(ventanareg,textvariable=StringVar())
data_nombre.grid(column=1, row=0)
data_apellido1 = Entry(ventanareg,textvariable=StringVar())
data_apellido1.grid(column=1, row=1)
data_apellido2 = Entry(ventanareg,textvariable=StringVar())
data_apellido2.grid(column=1, row=2)
data_dni = Entry(ventanareg,textvariable=StringVar())
data_dni.grid(column=1, row=3)
data_telefono = Entry(ventanareg,textvariable=StringVar())
data_telefono.grid(column=1, row=4)
data_direccion = Entry(ventanareg,textvariable=StringVar())
data_direccion.grid(column=1, row=5)
data_correo = Entry(ventanareg,textvariable=StringVar())
data_correo.grid(column=1, row=6)
data_usuario = Entry(ventanareg,textvariable=StringVar())
data_usuario.grid(column=1, row=7)
data_contrasena = Entry(ventanareg,show="*",textvariable=StringVar())
data_contrasena.grid(column=1, row=8)
data_contrasenarep = Entry(ventanareg,show="*",textvariable=StringVar())
data_contrasenarep.grid(column=1, row=9)
captchar_code = captch()
captchar = "Captcha: " + captchar_code
captchar = Label(ventanareg,text=captchar)
captchar_required = Label(ventanareg,text="*")
captchar.grid(column=0, row=10)
data_captchar = Entry(ventanareg,textvariable=StringVar())
data_captchar.grid(column=1, row=10)
captchar_required.grid(column=3, row=10)
botonreg= Button(ventanareg,text="Registrar",command=check_reg)
botonreg.grid(column=0, row=120,columnspan=2)
ventanareg.mainloop()
def email_reg():
print ""
def verificar():
usuario=data_usuario.get()
contra=data_contra.get()
if usuario == "123" and contra =="123":
ventana.destroy()
else:
tkMessageBox.showerror(title = "Login incorrecto", message = "Usuario o contraseña incorrecta")
def menu():
global data_usuario
global data_contra
global ventana
ventana = Tk()
ventana.geometry("200x200")
ventana.resizable(width=FALSE, height=FALSE)
ventana.title("ACCESO")
ventana.protocol('WM_DELETE_WINDOW', quit)
usuario = Label(ventana,text="Usuario: ")
contra = Label(ventana,text="Contraseña: ")
data_contra = Entry(ventana,show="*",textvariable=StringVar())
data_usuario = Entry(ventana,textvariable=StringVar())
boton= Button(ventana,text="Acceder",command=verificar)
boton1= Button(ventana,text="Darse de alta",command=registrarse)
usuario.pack()
data_usuario.pack()
contra.pack()
data_contra.pack()
boton.pack()
boton1.pack()
ventana.mainloop()
ventana_principal=Tk()
ventana_principal.geometry("200x200")
ventana_principal.resizable(width=FALSE, height=FALSE)
ventana_principal.title("PROGRAMA")
barra = ttk.Notebook(ventana_principal)
barra.pack(fill="both",expand="yes")
pes0 = ttk.Frame(barra)
pes1 = ttk.Frame(barra)
barra.add(pes0,text="Menu")
titulo_lista_usuario = Label(pes0, text="Usuario", font=("Helvetica", 14))
titulo_lista_usuario.grid(column=0, row=0)
titulo_lista_contrasena = Label(pes0, text="Contraseña", font=("Helvetica", 14))
titulo_lista_contrasena.grid(column=1, row=0)
lista_contrasena = Text(pes0, height=26, width=20, fg="white", bg="#8c8c8c", font=("Helvetica", 12))
barra.add(pes1,text="Opciones")
boton=Button(pes1,text="Boton1").place(x=0,y=0)
ventana_principal.mainloop()
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1541, in __call__
return self.func(*args)
File "proyecto_actual.pyw", line 267, in verificar
usuario=data_usuario.get()
File "C:\Python27\lib\lib-tk\Tkinter.py", line 2512, in get
return self.tk.call(self._w, 'get')
TclError: invalid command name ".42286696"
首次登录进入 用户123 passwd 123 但当我打开另一个按钮并关闭第二个Windows时,一个Windows 按钮登录它不再有效我不明白错误是。 这是错误 第一次登录进入 用户123 passwd 123 但当我打开另一个按钮并关闭第二个Windows时,一个Windows 按钮登录它不再有用我不明白错误是。
答案 0 :(得分:0)
class registro:
def __init__(self,master):
global data_user
global data_passwd
frame= Frame(master)
frame.pack()
self.regbutton=Button(frame,text="registrar",command=self.regg)
self.loginbutton=Button(frame,text="login",command=self.check)
self.data_user=Entry(frame)
self.data_passwd=Entry(frame)
self.data_user.pack()
self.data_passwd.pack()
self.loginbutton.pack()
self.regbutton.pack()
def regg(self):
registro= Tk()
registro.mainloop()
def check(self):
clave = "123"
if self.data_user.get() == clave and self.data_passwd.get() == clave:
print "correcto"
else:
print "incorrecto"
def login(self):
registro= Tk()
root = Tk()
b = registro(root)
打印“hola”
root.mainloop()
esta es la solucion ya lo consegui gracias
asi puedes crear una ventana y retornar a ella aunque se cree otra desde la misma