web-dev-qa-db-ja.com

QpushButtonが文字列で押されたときにQlineEditでテキストを取得する方法は?

関数を実装しようとしています。私のコードを以下に示します。

ユーザーが「接続」という名前のプッシュボタンをクリックしたときに、「ホスト」という文字列のオブジェクト名「ホスト」を使用して、ラインエディットのテキストを取得したい。これどうやってするの?試したが失敗した。この機能を実装するにはどうすればよいですか?

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を始めたばかりです!

31
esafwan

私の最初の提案は、Designerを使用してGUIを作成することです。自分で入力するのは面倒で時間がかかり、間違いなくDesignerよりも多くの間違いを犯します。

正しい軌道に乗るために役立つ PyQtチュートリアル があります。リストの最初の部分は、開始点です。

特定のクラスで利用可能なメソッドを把握するための良いガイドは、 PyQt4 Class Reference です。この場合、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_()
38
tgray

オブジェクト名はあまり重要ではありません。注目すべきは、lineeditオブジェクト(le)とプッシュボタンオブジェクト(pb)を格納する変数です

 QObject(self.pb、SIGNAL( "clicked()")、self.button_clicked)
 
 def button_clicked(self):
 self.le.setText (「ホスト」)

これがあなたの望むものだと思います。私はあなたの質問を正しく得たことを願っています:)

0
lionel319