関数を実装しようとしています。コードは以下の通りです。
ユーザーが「connect」という名前のプッシュボタンをクリックしたときに、文字列「shost」内のオブジェクト名「host」のテキストをラインエディットで取得したいです。どうすればいいですか? 試してみましたが失敗しました。この機能を実装するにはどうすればいいですか?
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
le = QLineEdit()
le.setObjectName("host")
le.setText("Host")
pb = QPushButton()
pb.setObjectName("connect")
pb.setText("Connect")
layout.addWidget(le)
layout.addWidget(pb)
self.setLayout(layout)
self.connect(pb, SIGNAL("clicked()"),self.button_click)
self.setWindowTitle("Learning")
def button_click(self):
#i want the text in lineedit with objectname
#'host' in a string say 'shost'. when the user click
# the pushbutton with name connect.How do i do it?
# I tried and failed. How to implement this function?
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
さて、「button_click」関数をどのように実装すればいいのでしょうか? 私は pyQt を使い始めたばかりです!
ベストアンサー1
私の最初の提案は、Qt Designer を使用して GUI を作成することです。自分で入力するのは面倒で、時間がかかり、Qt Designer よりも間違いなく間違いが多くなります。
ここにあるいくつかのPyQt チュートリアル正しい方向に進むための手助けになります。リストの最初の項目から始めてください。
特定のクラスでどのようなメソッドが利用できるかを知るための良いガイドは、PyQt4 クラスリファレンスこの場合、調べて方法QLineEdit
があることを確認しますtext
。
具体的な質問にお答えします:
GUI要素をオブジェクトの残りの部分で利用できるようにするには、self.
import sys
from PyQt4.QtCore import SIGNAL
from PyQt4.QtGui import QDialog, QApplication, QPushButton, QLineEdit, QFormLayout
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
self.le = QLineEdit()
self.le.setObjectName("host")
self.le.setText("Host")
self.pb = QPushButton()
self.pb.setObjectName("connect")
self.pb.setText("Connect")
layout = QFormLayout()
layout.addWidget(self.le)
layout.addWidget(self.pb)
self.setLayout(layout)
self.connect(self.pb, SIGNAL("clicked()"),self.button_click)
self.setWindowTitle("Learning")
def button_click(self):
# shost is a QString object
shost = self.le.text()
print shost
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()