Я создал для своего плагина начальный графический интерфейс с 3 кнопками. Это работает очень хорошо, и если я нажму на одну из кнопок, запустится определенное действие. Пока это работает. Если я нажму на одну из кнопок, появится новый графический интерфейс с двумя кнопками «ОК» и «Отмена» и появится строка редактирования. Если я нажму «Отмена», графический интерфейс будет закрыт, если я нажму «ОК», я хочу, чтобы программа считывала текст из строки редактирования и сохраняла его в переменной. Это пока не работает.
Вот класс, содержащий диалог:
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:
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)
Это только одна короткая часть класса, но именно в этой части у меня возникает вопрос, как читать текст из виджета LineEdit.
Есть ли у вас какие-либо идеи или предложения?
Спасибо и извините, если это двойной пост, но я не нашел подходящего ответа для своей проблемы.