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
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
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: 1 invitado(s)