Pregunta

Estoy tratando de implementar una función. Mi código es la siguiente.

Quiero obtener el texto en LineEdit con objectname 'anfitrión' en un ejemplo cadena 'shost' cuando el usuario hace clic en el botón con el nombre de 'conectar'. ¿Cómo puedo hacer esto? He intentado y han fracasado. ¿Cómo se implementa 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 se implementa la función "Button_Click"? Acabo de empezar con pyqt!

¿Fue útil?

Solución

Mi primera sugerencia es utilizar Designer para crear sus interfaces gráficas de usuario. Escribirlos usted mismo chupa, toma más tiempo, y que sin duda hacer más errores de los Designer.

Éstos son algunos PyQt tutoriales para ayudarle a obtener en el camino correcto. El primero en la lista es donde debe empezar.

Una guía buena para averiguar cuáles están disponibles para clases específicas métodos es la PyQt4 Referencia de la Clase . En este caso se mirar hacia arriba y ver la QLineEdit hay un método text.

Para responder a su pregunta específica:

Para que los elementos de la GUI disponible para el resto del objeto, con un prefacio 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_()

Otros consejos

El nombre de objeto no es muy importante. lo que debería concentrarse en cuenta es la variable que almacena el objeto LineEdit (le) y su objeto de pulsador (pb)

QObject(self.pb, SIGNAL("clicked()"), self.button_clicked)

def button_clicked(self):
  self.le.setText("shost")

creo que esto es lo que desea. Espero que consiguiera su pregunta correctamente:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top