1

私はPysideを学んでいて、QLineEditから自分のメソッドにテキストを取得してクエリなどに入力できるように見えません。lineEdit.text()と関係があることはわかっていますが、そうではありません。動作しているようです。テキストが変数に入る前に、それをシグナルに関連付ける必要がありますか?

これは私が試してきたタイプのことです。更新するためにtextChangedシグナルが必要ですか?self.lineを追加しようとしましたが、それも機能しませんでした。オブジェクト指向プログラミングでは少し錆びています。

line=QtGui.QLineEdit(self)
myVar = line.text()

短いコード例があれば素晴らしいでしょう。ありがとう!

4

1 に答える 1

3

オブジェクトを作成し、その直後に使用しているようです。もちろん、text();から空の文字列を取得します。そのようには機能しません。

GUIにを追加しQLineEdit、ユーザーにGUIを使用して何かを実行させてから、を使用してテキストを取得する必要がありますQLineEdit.text()。ユーザーがいつテキストを変更したかを正確に知るには、はい、スロットに接続する必要があります。QLineEdit.textEdited

これは、このようなメカニズムを使用して、変更されるとすぐにすべてのテキストをaQLineEditからaにコピーする完全な例です。QLabel

import sys

from PySide.QtCore import *
from PySide.QtGui import *

class MainWindow(QWidget):
    def __init__(self):
        QWidget.__init__(self)

        layout = QVBoxLayout()
        self.setLayout(layout)

        self.line_edit = QLineEdit()
        layout.addWidget(self.line_edit)

        self.label = QLabel()
        layout.addWidget(self.label)

        self.line_edit.textChanged.connect(self.line_edit_text_changed)

        self.show()

    def line_edit_text_changed(self, text):
        self.label.setText(text)

app = QApplication(sys.argv)
mw = MainWindow()
app.exec_()

これは、独自の機能をスロットに接続する方法を示す例です。しかし、aQLabelにはsetTextスロットがあるのでself.line_edit.textChanged.connect(self.line_edit.setText)、関数を定義することはできますが、定義することはできません。

PSあなたは本当にいくつかのチュートリアルを読むべきです。これはとても便利だと思いました。

于 2012-07-27T05:36:48.413 に答える