文字列内で QpushButton が押されたときに QlineEdit でテキストを取得するにはどうすればよいでしょうか? 質問する

文字列内で QpushButton が押されたときに QlineEdit でテキストを取得するにはどうすればよいでしょうか? 質問する

関数を実装しようとしています。コードは以下の通りです。

ユーザーが「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_()

おすすめ記事