¿Cómo obtener texto de lineEdit en Pyside?

Estoy aprendiendo Pyside y parece que no puedo obtener texto de QLineEdit en mi propio método para poder ingresarlo en una consulta, etc. Sé que tiene que ver con lineEdit.text(), pero no lo es pareciendo funcionar. ¿Necesito asociarlo con una señal antes de que el texto entre en mi variable?

Este es el tipo de cosas que he estado intentando. ¿Necesito una señal de textChanged para que se actualice o algo así? Intenté agregar self.line , pero tampoco funcionó, un poco oxidado en la programación orientada a objetos.

line=QtGui.QLineEdit(self)
myVar = line.text()

Un ejemplo de código corto sería genial. ¡Gracias!

preguntado el 27 de julio de 12 a las 06:07

1 Respuestas

Parece que estás creando el objeto y usándolo justo después. Por supuesto, obtienes una cadena vacía de text(); no funciona así.

Deberías agregar el QLineEdit a una GUI, deje que el usuario haga algo con ella y luego obtenga el texto con QLineEdit.text(). Para saber cuándo exactamente el usuario cambió el texto, eso sí, debes conectarte al QLineEdit.textEdited espacio.

Aquí hay un ejemplo completo que utiliza dicho mecanismo para copiar todo el texto de un QLineEdit a una QLabel tan pronto como se modifique.

import sys

from PySide.QtCore import *
from PySide.QtGui import *

class MainWindow(QWidget):
    def __init__(self):
        QWidget.__init__(self)

        layout = QVBoxLayout()
        self.setLayout(layout)

        self.line_edit = QLineEdit()
        layout.addWidget(self.line_edit)

        self.label = QLabel()
        layout.addWidget(self.label)

        self.line_edit.textChanged.connect(self.line_edit_text_changed)

        self.show()

    def line_edit_text_changed(self, text):
        self.label.setText(text)

app = QApplication(sys.argv)
mw = MainWindow()
app.exec_()

Este es un ejemplo que muestra cómo puede conectar su propia función a una ranura. Pero desde un QLabel tiene un setText tragamonedas, podríamos hacer self.line_edit.textChanged.connect(self.line_edit.setText) y no definir una función.

PD Deberías leer algún tutorial; encontré esta muy útil.

Respondido 27 Jul 12, 07:07

Supongo que no podría mostrar que QLineEdit.text() se usa con la señal QLineEdit.textEdited, ¿podría hacerlo? - arrendajo

Oh, he estado leyendo los tutoriales, y no es el movimiento de datos entre elementos psíquicos preexistentes con sus señales y ranuras existentes lo que me atrapa. Está moviendo los datos a mis propias variables para ir a una base de datos, etc. Lo que tengo en mi pantalla es muy parecido a lo que escribiste, lo seguiré mirando porque debo estar cerca. ¡¡¡Gracias por la ayuda!!! - arrendajo

Ese ultimo deberia ser self.line_edit.textChanged.connect(self.label.setText) (etiqueta en lugar de line_edit) - goetzc

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.