Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Error con Entry y Get()

Estas en el tema de Error con Entry y Get() en el foro de Python en Foros del Web. Que tal compañeros, soy nuevo en el foro y en la programacion de python. Tengo el sig codigo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Python: Ver original from ...
  #1 (permalink)  
Antiguo 29/09/2014, 15:24
 
Fecha de Ingreso: septiembre-2014
Mensajes: 4
Antigüedad: 10 años, 1 mes
Puntos: 0
Error con Entry y Get()

Que tal compañeros, soy nuevo en el foro y en la programacion de python.

Tengo el sig codigo:

Código Python:
Ver original
  1. from tkinter import *
  2. import pypyodbc
  3.  
  4. root=Tk()
  5. root.resizable(0,0)
  6. root.geometry('600x300+500+300')
  7.  
  8. class principal():        
  9.     def valida_acceso() :
  10.         connection_string ='Driver={SQL Server Native Client  
  11.         11.0};Server=150.150.1.2;Database=Sh;Uid=sp;Pwd=sp;'
  12.         connection = pypyodbc.connect(connection_string)        
  13.         SQL = "SELECT * FROM Usuarios WHERE Usuario=?"
  14.         cur = connection.cursor()                
  15.         a=principal.pantalla_login.tbx_usuario.get()
  16.         cur.execute(SQL,a)
  17.         row= cur.fetchone()
  18.         if row:
  19.             print (row[0], row[1])
  20.         connection.commit()
  21.         cur.close()
  22.         connection.close()
  23.        
  24.     def pantalla_login():        
  25.         lab_usuario = Label(root, text="Usuario: ", font=("Helvetica", 14,
  26.                              'bold'),bg='red').grid(row=3, column=1, sticky=W)
  27.         tbx_usuario = Entry(root, text="Usuario", textvariable=StringVar(), font=
  28.                               ("Helvetica", 14),fg='blue').grid(row=3,
  29.                             column=2, sticky=W)
  30.         Button(root, text="Accesar".format(1),font=("Helvetica", 14,'bold'),
  31.                             command=principal.valida_acceso).grid(row=6,column=2,sticky=E)
  32.         root.mainloop()
  33.  
  34. principal.pantalla_login()

Quiero que capturen el usuario en la caja de texto, y la valide en la base de datos, el problema es que me marca error:

Código:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1487, in __call__
return self.func(*args)
File "C:\login.py", line 68, in valida_acceso
a=principal.pantalla_login.tbx_usuario1.get()
AttributeError: 'function' object has no attribute 'tbx_usuario'
Me pueden apoyar por favor!!

Gracias de antemano

Última edición por razpeitia; 29/09/2014 a las 15:59
  #2 (permalink)  
Antiguo 29/09/2014, 16:10
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Error con Entry y Get()

Tu error es muy simple.

Código:
a=principal.pantalla_login.tbx_usuario1.get()
AttributeError: 'function' object has no attribute 'tbx_usuario'
pantalla_login es una función y no veo porque debería el atributo tbx_usuario.

Ademas veo que no estas usando clases apropiadamente, tienes dependencias con variables globales, hardcodeas credenciales de acceso en código fuente, etc..

Algo mas o menos así debería de funcionar.
Código Python:
Ver original
  1. from tkinter import *
  2. import pypyodbc
  3.  
  4. root=Tk()
  5. root.resizable(0,0)
  6. root.geometry('600x300+500+300')
  7.  
  8. class Principal():  
  9.     def valida_acceso(self):
  10.         connection_string ='Driver={SQL Server Native Client 11.0};Server=150.150.1.2;Database=Sh;Uid=sp;Pwd=sp;'
  11.         connection = pypyodbc.connect(connection_string)
  12.         SQL = "SELECT * FROM Usuarios WHERE Usuario=?"
  13.         cur = connection.cursor()
  14.         a = self.tbx_usuario.get()
  15.         cur.execute(SQL,a)
  16.         row= cur.fetchone()
  17.         if row:
  18.             print (row[0], row[1])
  19.         connection.commit()
  20.         cur.close()
  21.         connection.close()
  22.        
  23.     def pantalla_login(self):
  24.         lab_usuario = Label(root, text="Usuario: ", font=("Helvetica", 14,
  25.                              'bold'),bg='red').grid(row=3, column=1, sticky=W)
  26.         self.tbx_usuario = Entry(root, text="Usuario", textvariable=StringVar(), font=
  27.                               ("Helvetica", 14),fg='blue').grid(row=3,
  28.                             column=2, sticky=W)
  29.         Button(root, text="Accesar".format(1),font=("Helvetica", 14,'bold'),
  30.                             command=self.valida_acceso).grid(row=6,column=2,sticky=E)
  31.         root.mainloop()
  32.  
  33. principal = Principal()
  34. principal.pantalla_login()
  #3 (permalink)  
Antiguo 30/09/2014, 14:15
 
Fecha de Ingreso: septiembre-2014
Mensajes: 4
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Error con Entry y Get()

Gracias, ya modifique el codigo pero me aparece otro error:

File "C:\ARCHIVOS\Inventario\login.py", line 21, in valida_acceso
a = self.tbx_usuario.get()
AttributeError: 'NoneType' object has no attribute 'get'
  #4 (permalink)  
Antiguo 30/09/2014, 16:54
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Error con Entry y Get()

Es porque efectivamente self.tbx_usuario es None y me acabo de dar cuenta que tienes pegado el metodo grid, no me sorprende porque no te jala.

Código Python:
Ver original
  1. from tkinter import *
  2. import pypyodbc
  3.  
  4. root=Tk()
  5. root.resizable(0,0)
  6. root.geometry('600x300+500+300')
  7.  
  8. class Principal():  
  9.     def valida_acceso(self):
  10.         connection_string ='Driver={SQL Server Native Client 11.0};Server=150.150.1.2;Database=Sh;Uid=sp;Pwd=sp;'
  11.         connection = pypyodbc.connect(connection_string)
  12.         SQL = "SELECT * FROM Usuarios WHERE Usuario=?"
  13.         cur = connection.cursor()
  14.         a = self.tbx_usuario.get()
  15.         cur.execute(SQL,a)
  16.         row= cur.fetchone()
  17.         if row:
  18.             print (row[0], row[1])
  19.         connection.commit()
  20.         cur.close()
  21.         connection.close()
  22.        
  23.     def pantalla_login(self):
  24.         lab_usuario = Label(root, text="Usuario: ", font=("Helvetica", 14,
  25.                              'bold'),bg='red').grid(row=3, column=1, sticky=W)
  26.         self.tbx_usuario = Entry(root, text="Usuario", textvariable=StringVar(), font=
  27.                               ("Helvetica", 14),fg='blue')
  28.         self.tbx_usuario.grid(row=3, column=2, sticky=W)
  29.         Button(root, text="Accesar".format(1),font=("Helvetica", 14,'bold'),
  30.                             command=self.valida_acceso).grid(row=6,column=2,sticky=E)
  31.         root.mainloop()
  32.  
  33. principal = Principal()
  34. principal.pantalla_login()
Encuentra la diferencia.
  #5 (permalink)  
Antiguo 01/10/2014, 08:49
 
Fecha de Ingreso: septiembre-2014
Mensajes: 4
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Error con Entry y Get()

Excelente amigo ya funciono!! muchas gracias!

Etiquetas: drive, entry, ip, red
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:24.