Después de tanto batallar ya hallamos el resultado de esta dificultad que ciertos lectores de este espacio han presentado. Si tienes alguna información que compartir no dejes de dejar tu información.
Solución:
Mi primera sugerencia es usar Designer para crear sus GUI. Escribirlos usted mismo apesta, toma más tiempo y definitivamente cometerá más errores que Designer.
Aquí hay algunos tutoriales de PyQt para ayudarlo a tomar el camino correcto. El primero en la lista es donde debe comenzar.
Una buena guía para descubrir qué métodos están disponibles para clases específicas es la referencia de clase de PyQt4. En este caso buscarías QLineEdit
y ver que hay un text
método.
Para responder a su pregunta específica:
Para que los elementos de la GUI estén disponibles para el resto del objeto, prepárelos con self.
import sys
from PyQt4.QtCore import SIGNAL
from PyQt4.QtGui import QDialog, QApplication, QPushButton, QLineEdit, QFormLayout
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
self.le = QLineEdit()
self.le.setObjectName("host")
self.le.setText("Host")
self.pb = QPushButton()
self.pb.setObjectName("connect")
self.pb.setText("Connect")
layout = QFormLayout()
layout.addWidget(self.le)
layout.addWidget(self.pb)
self.setLayout(layout)
self.connect(self.pb, SIGNAL("clicked()"),self.button_click)
self.setWindowTitle("Learning")
def button_click(self):
# shost is a QString object
shost = self.le.text()
print shost
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
El nombre del objeto no es muy importante. en lo que debería centrarse es en la variable que almacena el objeto lineedit (le) y su objeto pushbutton (pb)
QObject(self.pb, SIGNAL("clicked()"), self.button_clicked) def button_clicked(self): self.le.setText("shost")
Creo que esto es lo que quieres. Espero haber respondido correctamente a tu pregunta 🙂