在qlineEdit中访问QT文本

时间:2014-01-14 16:28:03

标签: python qt pyqt

我有一个包含2个小部件的表单。一个LineEdit(姓名:lineEdit)和Button(姓名pushButton_2)。
在我的代码下面:

from PyQt4 import QtCore, QtGui  

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(400, 300)
        self.pushButton_2 = QtGui.QPushButton(Form)
        self.pushButton_2.setGeometry(QtCore.QRect(140, 70, 75, 23))
        self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))
        self.lineEdit = QtGui.QLineEdit(Form)
        self.lineEdit.setGeometry(QtCore.QRect(130, 10, 113, 20))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))

        self.retranslateUi(Form)
        QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL(_fromUtf8("clicked()")), myFunc)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Form", "Form", None))
        self.pushButton_2.setText(_translate("Form", "Press me!", None))


if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    Form = QtGui.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())

我想创建一个函数,所以我按button它将获得值文本形式LineEdit小部件。如下所示:

def myfunc():
    text=Get_Value_From_Widget()
    ...........
    return text

我该怎么做?

2 个答案:

答案 0 :(得分:1)

或者,您可以手动编写此简单小部件,而无需使用QtDesigner。一开始可能会有点困难,但从长远来看它是值得的,因为你可以更好地控制自己的行为。

以下是您可能想要做的一个简单示例。

from PyQt4 import QtGui, QtCore

class CustomWidget(QtGui.QWidget):

    def __init__(self, parent=None):
        super(QtGui.QWidget, self).__init__(parent)
        layout = QtGui.QVBoxLayout(self)

        self.lineEdit1 = QtGui.QLineEdit(self)
        layout.addWidget(self.lineEdit1)
        self.pushButton = QtGui.QPushButton("line1 -> line2", self)
        self.pushButton.clicked.connect(self.onClick)
        layout.addWidget(self.pushButton)
        self.lineEdit2 = QtGui.QLineEdit(self)
        layout.addWidget(self.lineEdit2)

    def onClick(self):
        self.lineEdit2.setText(self.lineEdit1.text())


if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    widget = CustomWidget()
    widget.show()
    sys.exit(app.exec_())

答案 1 :(得分:0)

首先,我认为您应该查看有关SIGNAL / SLOT机制的Qt文档。

无论如何,你的函数应该被定义为Ui_Form

def myFunc(self):
    text=self.lineEdit.text()
    return text

请注意,代码区分大小写(作为方法/函数的名称),因此在您的情况下myFuncmyfunc的方法不同

相关问题