50

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

ユーザーが「connect」という名前のプッシュボタンをクリックしたときに、「shost」という文字列にオブジェクト名「host」が含まれるlineeditのテキストを取得したいと思います。これどうやってするの?私は試みて失敗しました。この関数を実装するにはどうすればよいですか?

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

4

4 に答える 4

58

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

正しい軌道に乗るのに役立つPyQtチュートリアルをいくつか紹介します。リストの最初のものは、どこから始めるべきかです。

特定のクラスで使用できるメソッドを理解するための優れたガイドは、PyQt4クラスリファレンスです。この場合、あなたは調べてQLineEdittext方法があるのを見るでしょう。

あなたの特定の質問に答えるには:

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_()
于 2010-06-10T19:59:33.737 に答える
2

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

QObject(self.pb、SIGNAL( "clicked()")、self.button_clicked)

def button_clicked(self):
  self.le.setText( "shost")

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

于 2010-06-11T06:46:29.810 に答える
0

PyQt5に実装された受け入れられたソリューション

import sys
from PyQt5.QtWidgets import QApplication, QDialog, QFormLayout
from PyQt5.QtWidgets import (QPushButton, QLineEdit)

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")
        self.pb.clicked.connect(self.button_click)

        layout = QFormLayout()
        layout.addWidget(self.le)
        layout.addWidget(self.pb)
        self.setLayout(layout)

        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_()
于 2020-08-26T07:31:30.130 に答える
0

短く一般的な答えは次のとおりです。

self.input = QLineEdit()
your_text = self.input.text()
于 2021-10-23T12:52:53.603 に答える