python - qlineedit pyqt5
¿Cómo obtener texto en QlineEdit cuando se presiona QpushButton en una cadena? (2)
Estoy tratando de implementar una función. Mi código se da a continuación.
Quiero obtener el texto en línea con el nombre de objeto ''host'' en una cadena y decir ''shost'' cuando el usuario haga clic en el botón pulsador con el nombre ''connect''. ¿Cómo puedo hacer esto? Lo intenté y fallé. ¿Cómo implemento esta función?
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
le = QLineEdit()
le.setObjectName("host")
le.setText("Host")
pb = QPushButton()
pb.setObjectName("connect")
pb.setText("Connect")
layout.addWidget(le)
layout.addWidget(pb)
self.setLayout(layout)
self.connect(pb, SIGNAL("clicked()"),self.button_click)
self.setWindowTitle("Learning")
def button_click(self):
#i want the text in lineedit with objectname
#''host'' in a string say ''shost''. when the user click
# the pushbutton with name connect.How do i do it?
# I tried and failed. How to implement this function?
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
Ahora, ¿cómo implemento la función "button_click"? Acabo de empezar con pyQt!
El nombre del objeto no es muy importante. en lo que deberías enfocarte es en la variable que almacena el objeto lineedit (le) y tu 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 recibido su pregunta correctamente :)
Mi primera sugerencia es usar Designer para crear sus GUIs. 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 encontrar el camino correcto. El primero en la lista es donde debes comenzar.
Una buena guía para descubrir qué métodos están disponibles para clases específicas es la Referencia de clases de PyQt4 . En este caso, debería buscar QLineEdit
y ver si hay un método de text
.
Para responder a su pregunta específica:
Para hacer que sus elementos de 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_()