我为我的插件创建了一个带有3个按钮的启动GUI.这非常有效,如果我单击其中一个按钮,则会启动特定操作.到目前为止这个工作.如果我点击其中一个按钮,新的GUI有两个按钮“ok”和“cancel”,并出现一条lineedit.如果我按下取消,GUI将被关闭,如果我按下ok,我希望程序从editline读取文本并将其存储在变量中.到目前为止,这还没有奏效.
@H_301_21@解决方法
这是包含对话框的类:
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>",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小部件中读取文本的部分.
你有什么想法或建议吗?
如果这是一个双重帖子,感谢和抱歉,但我找不到适合我的问题的答案.
如
documentation中所述,可以使用其方法文本检索QLineEdit的文本.
text = dlg.ui.lineEdit.text()
请注意,它是一个QString,而不是常规字符串,但是当您使用“%s”%文本格式化它时,这不应该是一个问题.