Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Problema con QlineEdit
#1
Hola a todos, estoy teniendo inconvenientes para recuperar la información de una caja de texto QlineEdit (txt_dni), la cual posteriormente utilizo para efectuar una consulta. Al ejecutar el programa, no trae la información referida al DNI escrito. Desde ya agradezco sus aportes:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog, QGridLayout, QMessageBox, QLabel, QPushButton, QLineEdit, QSpinBox, QTableWidget, QTableWidgetItem
from PyQt5 import uic
from PyQt5.QtSql import QSqlDatabase, QSqlQuery

class Dialogo(QMainWindow):
    def __init__(self):
       QMainWindow.__init__(self)
       uic.loadUi("Principal.ui", self)
       self.showMaximized()
       self.txt_dni = QLineEdit(self)
       self.db = QSqlDatabase.addDatabase('QMYSQL')
       self.db.setHostName("localhost")
       self.db.setDatabaseName("engage")
       self.db.setUserName("engage")
       self.db.setPassword("engage")
       self.btn_buscar.clicked.connect(self.buscar)

    def buscar(self):
       estado = self.db.open()
       if estado == False:
          QMessageBox.warning(self, "Error", self.db.lastError().text(), QMessageBox.Discard)
       else:
          self.table.setColumnCount(6)
          self.table.setHorizontalHeaderLabels(['Apellido y Nombre', 'Tipo y Nro doc', 'Nro Tarjeta', 'Cuenta', 'Producto', 'Nro Fidelidad'])
          dni = self.txt_dni.text()
          row = 0
          sql = "SELECT * FROM clientes WHERE tipo_nrodni = '%s'" % dni
          query = QSqlQuery(sql)
          while query.next():
             self.table.insertRow(row)
             ApellidoNombre = QTableWidgetItem(str(query.value(0)))
             TipoDoc = QTableWidgetItem(str(query.value(1)))
             NroTarjeta = QTableWidgetItem(str(query.value(2)))
             Cuenta = QTableWidgetItem(str(query.value(3)))
             Producto = QTableWidgetItem(str(query.value(4)))
             NroFidelidad = QTableWidgetItem(str(query.value(5)))
             self.table.setItem(row, 0, ApellidoNombre)
             self.table.setItem(row, 1, TipoDoc)
             self.table.setItem(row, 2, NroTarjeta)
             self.table.setItem(row, 3, Cuenta)
             self.table.setItem(row, 4, Producto)
             self.table.setItem(row, 5, NroFidelidad)
             row = row + 1
       self.db.close()
Responder
#2
Hola, ¿cómo estás?

Estás retornando el contenido de la caja de texto correctamente, ¿estás seguro que esa línea es la que provoca el error? ¿Utilizando print(dni) luego de la línea marcada no imprime nada?

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
Hola Francisco, gracias por la pronta respuesta. Al efectuar la prueba que me sugeriste, me inserta una linea en blanco.
Responder
#4
Efectivamente la caja de texto en la que estás escribiendo no es self.txt_dni. Por lo que veo estás creando el widget al inicializar la clase pero no lo posicionas en ningún lado, por ende no podría aparecer en la ventana. Desconozco cómo funciona uic.loadUi(), pero calculo que deberías borrar self.txt_dni = QLineEdit(self) y darle ese nombre a la caja de texto directamente en QtDesigner.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#5
Buen día Francisco, funciono a la perfección, un millón de gracias!!![Imagen: biggrin.png]
Responder


Salto de foro:


Usuarios navegando en este tema: 2 invitado(s)