Autor
|
Tema: Problema con Clases y Funciones POO (Python) (Leído 3,555 veces)
|
DeMoNcRaZy
Desconectado
Mensajes: 420
$~*|_
|
Hola, buenas a tod@s Estoy intentando hacer un login verificando el usuario y password. Si lo hago normal sin POO me funciona y lo hago bien. La cosa es que estoy metiéndome en POO y quiero hacerlo en POO pero lo de vincular clases y funciones mas o menos lo llevo. Pero tengo aquí un fallo con que no lee el cursor, y lo tengo definido Tengo el archivo principal: from tkinter import * from tkinter import ttk import pymysql from tkinter import messagebox as MessageBox from tkinter import scrolledtext as st import conexion class Aplicacion: def __init__(self): self.conexion1 = conexion.conexiones() self.ventana1 = Tk() self.ventana1.title("Login") self.ventana1.geometry("400x400") self.imagenLogo = PhotoImage(file="logo2.png") self.divLogo = Label(self.ventana1, image=self.imagenLogo) self.divLogo.place(x=93, y=0) self.x_ventana = self.ventana1.winfo_screenwidth() // 2 - 300 // 2 self.y_ventana = self.ventana1.winfo_screenheight() // 2 - 300 // 2 self.posicion = str(300) + "x" + str(300) + "+" + str(self.x_ventana) + "+" + str(self.y_ventana) self.ventana1.geometry(self.posicion) self.ventana1.resizable(0,0) self.formulario() self.ventana1.mainloop() def formulario(self): ttk.Label(text="Usuario:").place(x=50, y=110) ttk.Label(text="Contraseña:").place(x=50, y=165) self.formUsuarioString = StringVar() self.formUsuario = Entry(self.ventana1, textvariable=self.formUsuarioString) self.formUsuario.place(x=50, y=130, width=200, height=30) self.formPasswordString = StringVar() self.formPassword = Entry(self.ventana1, textvariable=self.formPasswordString) self.formPassword.place(x=50, y=185, width=200, height=30) botonAcceder = Button(self.ventana1, text="Acceder", command=self.login) botonAcceder.place(x=75, y=240, width=150, height=30) def login(self): datos = (self.formUsuarioString.get(), self.formPasswordString.get()) self.conexion1.verificar(datos) Ventana = Aplicacion()
y luego en el archivo conexión.py tengo eso: import pymysql class conexiones: def conexion(self): conexion2 = pymysql.connect(host='null', user='myadmin', password='null', database='python', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) def verificar(self, datos): con1 = self.conexion() cur = con1.cursor() sql = "SELECT * FROM trabajador WHERE nombre='{}' AND password='{}'".format(self.formUsuarioString.get(), self.formPasswordString.get()) cur.execute(sql) comprobardatosAcceso=cur.fetchall()
y este es el error que me da cuando intento hacer la consulta: Exception in Tkinter callback Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/tkinter/__init__.py", line 1921, in __call__ return self.func(*args) File "/Users/tomas/Downloads/DonMovil/objetos.py", line 47, in login self.conexion1.verificar(datos) File "/Users/tomas/Downloads/DonMovil/conexion.py", line 14, in verificar cur = con1.cursor() AttributeError: 'NoneType' object has no attribute 'cursor' [Finished in 12.2s] ¿Donde puede estar el error? Cualquier información adicional lo agradecería. Saludos!
|
|
|
En línea
|
Esta página web no está disponible - Google Chrome
|
|
|
Panic0
Desconectado
Mensajes: 218
|
Hola, buenas a tod@s Estoy intentando hacer un login verificando el usuario y password. Si lo hago normal sin POO me funciona y lo hago bien. La cosa es que estoy metiéndome en POO y quiero hacerlo en POO pero lo de vincular clases y funciones mas o menos lo llevo. Pero tengo aquí un fallo con que no lee el cursor, y lo tengo definido Tengo el archivo principal: from tkinter import * from tkinter import ttk import pymysql from tkinter import messagebox as MessageBox from tkinter import scrolledtext as st import conexion class Aplicacion: def __init__(self): self.conexion1 = conexion.conexiones() self.ventana1 = Tk() self.ventana1.title("Login") self.ventana1.geometry("400x400") self.imagenLogo = PhotoImage(file="logo2.png") self.divLogo = Label(self.ventana1, image=self.imagenLogo) self.divLogo.place(x=93, y=0) self.x_ventana = self.ventana1.winfo_screenwidth() // 2 - 300 // 2 self.y_ventana = self.ventana1.winfo_screenheight() // 2 - 300 // 2 self.posicion = str(300) + "x" + str(300) + "+" + str(self.x_ventana) + "+" + str(self.y_ventana) self.ventana1.geometry(self.posicion) self.ventana1.resizable(0,0) self.formulario() self.ventana1.mainloop() def formulario(self): ttk.Label(text="Usuario:").place(x=50, y=110) ttk.Label(text="Contraseña:").place(x=50, y=165) self.formUsuarioString = StringVar() self.formUsuario = Entry(self.ventana1, textvariable=self.formUsuarioString) self.formUsuario.place(x=50, y=130, width=200, height=30) self.formPasswordString = StringVar() self.formPassword = Entry(self.ventana1, textvariable=self.formPasswordString) self.formPassword.place(x=50, y=185, width=200, height=30) botonAcceder = Button(self.ventana1, text="Acceder", command=self.login) botonAcceder.place(x=75, y=240, width=150, height=30) def login(self): datos = (self.formUsuarioString.get(), self.formPasswordString.get()) self.conexion1.verificar(datos) Ventana = Aplicacion()
y luego en el archivo conexión.py tengo eso: import pymysql class conexiones: def conexion(self): conexion2 = pymysql.connect(host='null', user='myadmin', password='null', database='python', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) def verificar(self, datos): con1 = self.conexion() cur = con1.cursor() sql = "SELECT * FROM trabajador WHERE nombre='{}' AND password='{}'".format(self.formUsuarioString.get(), self.formPasswordString.get()) cur.execute(sql) comprobardatosAcceso=cur.fetchall()
y este es el error que me da cuando intento hacer la consulta: Exception in Tkinter callback Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/tkinter/__init__.py", line 1921, in __call__ return self.func(*args) File "/Users/tomas/Downloads/DonMovil/objetos.py", line 47, in login self.conexion1.verificar(datos) File "/Users/tomas/Downloads/DonMovil/conexion.py", line 14, in verificar cur = con1.cursor() AttributeError: 'NoneType' object has no attribute 'cursor' [Finished in 12.2s] ¿Donde puede estar el error? Cualquier información adicional lo agradecería. Saludos! El valor no está llegando a con1 Podes probar dos cosas: 1) globalizar con1 2) ponerle self a con1
|
|
|
En línea
|
Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.
|
|
|
DeMoNcRaZy
Desconectado
Mensajes: 420
$~*|_
|
El valor no está llegando a con1
Podes probar dos cosas: 1) globalizar con1
2) ponerle self a con1
Gracias por su comentario. Al final no era nada de eso. Solo había que hacer un return a la función conexión. return conexion2
Con eso se ha solucionado el problema. Gracias.
|
|
|
En línea
|
Esta página web no está disponible - Google Chrome
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Python] Importar Funciones de C++ a Modulo de Python
Scripting
|
Di6it4Lj4ck4L
|
2
|
4,332
|
2 Mayo 2011, 19:08 pm
por Di6it4Lj4ck4L
|
|
|
Ayuda!! :clases y funciones [SOLUCIONADO]
Programación C/C++
|
anamnesis_92
|
9
|
4,093
|
24 Enero 2012, 19:25 pm
por Uknow
|
|
|
doble duda (arreglo dinamico y funciones entre clases)
Programación C/C++
|
rulovive
|
5
|
3,455
|
5 Abril 2014, 22:11 pm
por rulovive
|
|
|
[PYTHON] Tutorial de clases en Python
Scripting
|
TheCrimulo
|
0
|
1,841
|
9 Diciembre 2014, 18:09 pm
por TheCrimulo
|
|
|
(Python 3.5) Problema con variables globales y funciones
Scripting
|
BigKaz
|
2
|
2,506
|
20 Diciembre 2016, 13:59 pm
por engel lex
|
|