2012-08-29 23 views
5

He creado para mi complemento una GUI de inicio con 3 botones. Esto funciona muy bien y si hago clic en uno de los botones se inicia una acción específica. Hasta ahora esto funciona. Si hago clic en uno de los botones, aparece una nueva GUI con dos botones "ok" y "cancel" y aparece un lineedit. Si presiono cancelar, la GUI se cerrará, si apunto ok, quiero que el programa lea el texto de la línea editable y lo almacene en una variable. Esto no funciona hasta ahora.¿Cómo leer el texto de QLineEdit en python?

Aquí es la clase que contiene el cuadro de diálogo:

from PyQt4.QtCore import pyqtSlot 
from PyQt4.QtGui import QDialog, QLineEdit 

from ui_grz import Ui_Dialog 

class grzDialog(QDialog): 

    def __init__(self): 
     QDialog.__init__(self) 
     # Set up the user interface from Designer. 
     self.ui = Ui_Dialog() 
     self.ui.setupUi(self) 

Esta es la clase que contians la estructura de la interfaz gráfica de usuario después de crear la interfaz gráfica de usuario con QT Designer y el pyuic4 comando:

from PyQt4 import QtCore, QtGui 

try: 
    _fromUtf8 = QtCore.QString.fromUtf8 
except AttributeError: 
    _fromUtf8 = lambda s: s 

class Ui_Dialog(object): 
    def setupUi(self, Dialog): 
     Dialog.setObjectName(_fromUtf8("Dialog")) 
     Dialog.resize(387, 153) 
     self.buttonBox = QtGui.QDialogButtonBox(Dialog) 
     self.buttonBox.setGeometry(QtCore.QRect(30, 110, 341, 32)) 
     self.buttonBox.setOrientation(QtCore.Qt.Horizontal) 
     self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) 
     self.buttonBox.setObjectName(_fromUtf8("buttonBox")) 
     self.label = QtGui.QLabel(Dialog) 
     self.label.setGeometry(QtCore.QRect(10, 10, 361, 51)) 
     self.label.setObjectName(_fromUtf8("label")) 
     self.lineEdit = QtGui.QLineEdit(Dialog) 
     self.lineEdit.setGeometry(QtCore.QRect(10, 60, 351, 31)) 
     self.lineEdit.setObjectName(_fromUtf8("lineEdit")) 

     self.retranslateUi(Dialog) 
     QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), Dialog.accept) 
     QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), Dialog.reject) 
     QtCore.QMetaObject.connectSlotsByName(Dialog) 

    def retranslateUi(self, Dialog): 
     Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "GRZ Analyse", None, QtGui.QApplication.UnicodeUTF8)) 
     self.label.setText(QtGui.QApplication.translate("Dialog", "<html><head/><body><p><span style=\" font-weight:600;\">Bitte geben Sie hier den Schwellenwert für die GRZ-Analyse ein:</span></p><p>Bitte achten Sie auf eine korrekte Schreibweise (bspw. 2.5):</p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) 

Y en esta clase necesito la variable:

# Import the PyQt and QGIS libraries 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 
from qgis.core import * 

# Import the code for the dialog 
from ubgrzdialog import grzDialog 

class quickAnalysis: 

    def __init__(self, iface): 
     # Save reference to the QGIS interface 
     self.iface = iface 

    def grzAnalysis(self): 

     dlg = grzDialog() 
     dlg.show() 
     result = dlg.exec_() 
     if result == 1: 

      text = dlg.text() 
      QMessageBox.information(self.iface.mainWindow(),"test", "%s" %(text), QMessageBox.Ok) 

Esta es solo una parte corta de la clase, pero esta es la parte donde tengo la pregunta de cómo leer el texto del widget LineEdit.

¿Tiene alguna idea o sugerencia?

Gracias y lo siento si se trata de una publicación doble, pero no he encontrado una respuesta adecuada para mi problema.

Respuesta

8

Como se menciona en documentation, el texto de QLineEdit se puede recuperar con su método text.

text = dlg.ui.lineEdit.text() 

Tenga en cuenta que se trata de un QString, no una cadena normal, pero eso no debería ser un problema, ya que se da formato con su "%s" % text.

+0

Esto funciona. ¡Gracias! – Sven

Cuestiones relacionadas