2012-08-29 34 views
5

Tôi đã tạo cho plugin của tôi một GUI khởi động với 3 nút. Điều này hoạt động rất tốt và nếu tôi nhấp vào một trong các nút, một hành động cụ thể sẽ được bắt đầu. Cho đến nay công trình này. Nếu tôi nhấp vào một trong các nút, GUI mới có hai nút "ok" và "cancel" và một dòng lệnh xuất hiện. Nếu tôi đẩy hủy GUI sẽ bị đóng, nếu tôi bật ok, tôi muốn chương trình đọc văn bản từ editline và lưu nó trong một biến. Điều này doesnßt làm việc cho đến nay.Làm thế nào để đọc ra các văn bản từ QLineEdit trong python?

Đây là lớp chứa thoại:

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) 

Đây là lớp học mà contians cấu trúc của giao diện sau khi tạo GUI với QT Designer và các pyuic4 lệnh:

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

Và trong lớp học này, tôi cần biến:

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

Đây chỉ là một phần ngắn của lớp học, nhưng đây là phần mà tôi có câu hỏi làm thế nào để đọc văn bản từ tiện ích LineEdit.

Bạn có ý tưởng hoặc đề xuất nào không?

Cảm ơn và xin lỗi nếu đây là bài đăng kép, nhưng tôi chưa tìm thấy câu trả lời thích hợp cho vấn đề của mình.

Trả lời

8

Như đã đề cập trong documentation, văn bản của QLineEdit có thể được truy lục bằng phương pháp text.

text = dlg.ui.lineEdit.text() 

Lưu ý rằng đó là một QString, không phải là một chuỗi thông thường, nhưng đó không phải là một vấn đề như bạn định dạng nó với "%s" % text của bạn.

+0

Tác phẩm này. Cảm ơn! – Sven

Các vấn đề liên quan