6

プラグイン用に、3 つのボタンを備えた開始 GUI を作成しました。これは非常にうまく機能し、ボタンの 1 つをクリックすると、特定のアクションが開始されます。これまでのところ、これは機能します。ボタンの 1 つをクリックすると、「OK」と「キャンセル」の 2 つのボタンと lineedit を含む新しい GUI が表示されます。キャンセルを押すと GUI が閉じられます。OK を押すと、プログラムが編集行からテキストを読み取って変数に格納します。これは今のところうまくいきません。

ダイアログを含むクラスは次のとおりです。

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)

これは、QT Designer とコマンド pyuic4 で GUI を作成した後の GUI の構造を含むクラスです。

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

そして、このクラスでは変数が必要です:

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

これはクラスの短い部分の 1 つにすぎませんが、これは、LineEdit ウィジェットからテキストを読み取る方法について質問がある部分です。

アイデアや提案はありますか?

これが二重の投稿である場合は申し訳ありませんが、私の問題に対する適切な回答が見つかりませんでした.

4

1 に答える 1

9

As mentioned in the documentation, the text of a QLineEdit can be retrieved with its method text.

text = dlg.ui.lineEdit.text()

Note that it's a QString, not a regular string, but that shouldn't be a problem as you format it with your "%s" % text.

于 2012-08-29T16:09:12.893 に答える