2017-08-16 7 views
-1

私はQLineEditオブジェクトを持っています。入力ボタンを押すと、そのテキストで何かしたいと思います。 I returnPressed信号を接続する問題はないが、私は、たとえば、このような何かを行うことができないよ:PyQt5組み込み信号を変更する

lineedit = QLineEdit() 
lineedit.returnPressed.connect(test) 

@pyqtSlot(str) 
test(data): 
    print("enter pressed", data) 

これは単にエラーを与える:

TypeError: test() missing 1 required positional argument: 'data'

私はテキストコンテンツをしたいです信号によっても放出される。 returnPressedで発信する新しい信号を作成する方法はありますか?QLineEditのテキストコンテンツも送信しますか?

ノート:これはいくつかの状況では機能することに気付きました。たとえば、QRadioButtonの場合、がクリックされたときオンまたはオフの状態の場合、toggled信号はTrueFalseを発信します。

答えて

0

挙動はカスタムクラスで実装することができます。

class QLineEditX(QLineEdit): 
    returnPressedX = pyqtSignal(str) 
    def __init__(self): 
     super().__init__() 
     self.returnPressed.connect(self.on_return_pressed) 

    def on_return_pressed(self): 
     self.returnPressedX.emit(self.text()) 

しかしこれは少し不格好です。たぶん良い方法がありますか?

+0

私はこの点を見ていません。単に 'returnPressed'に接続して' print( "pressed"、lineedit.text()) 'を実行するのはなぜですか? – ekhumoro

+0

私の場合は、QTメインウィンドウ(mainwindow.py)をインポートするプログラム(program.py)があります。コントロールはmainwindow.pyで動的に作成されますが、program.pyの関数にシグナルが挿入されている必要があります。私はprogram.pyのlineeditオブジェクトにアクセスすることはできません。 – twester

関連する問題