ボタンがクリックされたときに関数を実行し、この関数の値を LineEdit. そして、ここに私のコードがあります:
class MyForma1(object):
def AddWidgets1(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(613, 545)
self.pushButton = QtGui.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(244, 352, 111, 51))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.lineEdit = QtGui.QLineEdit(Form)
self.lineEdit.setGeometry(QtCore.QRect(242, 290, 111, 20))
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
self.retranslateUi(Form)
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), Form.changeText)
def retranslateUi(self, Form):
self.pushButton.setText(_translate("Form", "Click me", None))
self.lineEdit.setText(_translate("Form", "functionvalue", None))
class MyForma2(QtGui.QDialog, MyForma1):
def __init__(self, z11=0):
QtGui.QDialog.__init__(self)
self.AddWidgets1(self)
self.z = z11
def myfunc1(self):
self.z+=1
def changeText(self):
self.myfunc1()
self.lineEdit.setText(str(self.z))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Forma = MyForma2()
Forma.show()
sys.exit(app.exec_())
実際には問題なく動作しますが、やり方が気に入らないので、もっと精巧に作りたいと思っています。ここでの問題は、ボタンが関数と値の変換を一緒に「実行」することです。そして、ボタンが機能のみを実行し、さらに、この機能の値をボタンとは別にLineEdit に常に変換するものがあるとよいと思います。たとえば、常に監視する必要がある関数値が、ボタンだけでなく他のイベント (例: COM ポートからの入力信号) によっても影響を受ける場合があります。この場合、ボタンが押されたときだけでなく、機能が変更されるたびに信号を送信するとよいでしょう。