2012-08-29 13 views
5

मैंने अपनी प्लगइन के लिए 3 बटन के साथ एक प्रारंभ जीयूआई बनाया है। यह बहुत अच्छा काम करता है और यदि मैं बटनों में से किसी एक पर क्लिक करता हूं तो एक विशिष्ट क्रिया शुरू हो जाती है। अब तक यह काम करता है। यदि मैं बटनों में से एक पर क्लिक करता हूं तो दो बटन "ठीक" और "रद्द करें" के साथ एक नया जीयूआई और एक लाइनेडिट दिखाई देता है। अगर मैं रद्द करने पर जोर देता हूं तो जीयूआई बंद हो जाएगा, अगर मैं ठीक से दबाता हूं, तो मैं चाहता हूं कि प्रोग्राम संपादन से टेक्स्ट को पढ़े और इसे एक चर में संग्रहीत करे। यह अब तक काम नहीं करता है।पायथन में QLineEdit से पाठ को कैसे पढ़ा जाए?

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)) 

और:

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) 

इस वर्ग कि क्यूटी डिजाइनर के साथ जीयूआई और कमांड pyuic4 बनाने के बाद जीयूआई की संरचना contians है:

यहाँ संवाद युक्त वर्ग है इस कक्षा में मुझे चर की आवश्यकता है:

# 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) 

यह केवल एक छोटा सा हिस्सा है कक्षा, लेकिन यह वह हिस्सा है जहां मेरे पास सवाल है कि LineEdit विजेट से पाठ को कैसे पढ़ा जाए।

क्या आपके पास कोई विचार या सुझाव हैं?

धन्यवाद और खेद है कि यह एक डबल पोस्ट है, लेकिन मुझे मेरी समस्या के लिए उचित उत्तर नहीं मिला है।

उत्तर

8

जैसा कि documentation में उल्लिखित है, QLineEdit का पाठ इसकी विधि text के साथ पुनर्प्राप्त किया जा सकता है।

text = dlg.ui.lineEdit.text() 

ध्यान दें कि यह एक QString, नहीं एक नियमित स्ट्रिंग है, लेकिन वह एक समस्या के रूप में आप इसे अपने "%s" % text साथ स्वरूपित नहीं होना चाहिए।

+0

यह काम करता है। धन्यवाद! – Sven

संबंधित मुद्दे