我有一个包含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
我该怎么做?
答案 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
请注意,代码区分大小写(作为方法/函数的名称),因此在您的情况下myFunc
与myfunc
的方法不同