49697


pyqt5を使っています。QLineEditのテキストが変化したときに別に用意したラベルのテキストが変化するようにしたいです。次は試しに書いてみたコードです。

[code]

    import sys
    from PyQt5.QtWidgets import *
    from PyQt5.QtGui import *
    from PyQt5.QtCore import *
    from PyQt5 import *
    
    
    
    class LineEdit(QLineEdit):
        def __init__(self,title, parent):
            super().__init__(title,parent)
    
    
        def textChanged(self,e):
            pass
    
    
    class MainWindow(QtWidgets.QDialog):
        def __init__(self):
            super().__init__()
            font=QtGui.QFont()
            font.setPointSize(15)
    
            self.edit1=LineEdit("",self)
            self.edit1.setFont(font)
            self.edit1.setText("860")
    
            self.lbl1=QLabel("860")
            self.lbl1.setFont(font)
    
            layout1=QVBoxLayout()
            layout1.addWidget(self.edit1)
            layout1.addWidget(self.lbl1)
    
            self.setLayout(layout1)
    
    
    
            self.setWindowTitle('ラベル変化')
            self.setGeometry(300, 300, 400, 100)
    
    
        def write_lbl(self):
            val=self.edit1.text()
            self.lbl1.setText(val)
    
    if __name__ == '__main__':
    
        app = QApplication(sys.argv)
        main_window = MainWindow()
    
        main_window.show()
        sys.exit(app.exec_())
    
[/code]

これを実行することで次のようなGUIが作成されます。  
[![画像](https://i.stack.imgur.com/nL6AQ.png)](https://i.stack.imgur.com/nL6AQ.png)

ここで、QLineEditのテキストを編集したときに、ラベルの文字が一緒に編集されるようにしたいです。最初のLineEditのクラスの中でtestChangedの関数を使えば出来そうな気がしましたが、いまいちよく分かりませんでした。ご教授お願いします。


CC BY-SA 4.0
2018-10-27T00:43:49.313
49696
2018-10-27T01:44:04.220
26529
question
python3 pyqt5
pyqt5でQLineEditのテキストが変化したときに即座にラベルのテキストを変化させたい

[code]

    class MainWindow(QtWidgets.QDialog):
        def __init__(self):
            super().__init__()
            font=QtGui.QFont()
            font.setPointSize(15)
    
            self.edit1=LineEdit("",self)
            self.edit1.setFont(font)
            self.edit1.setText("860")
    
            self.lbl1=QLabel("860")
            self.lbl1.setFont(font)
    
            layout1=QVBoxLayout()
            layout1.addWidget(self.edit1)
            layout1.addWidget(self.lbl1)
    
            self.setLayout(layout1)
    
[/code]

の中に、

[code]

    self.connect(self.edit1,QtCore.SIGNAL("textEdited(QString)"),self.write_lbl)
    
[/code]

を入れてみてください。もちろん、`self.edit1`オブジェクトを作成した後にお願いします。  
私は`PySide`で試したのですが、これで動きました。`PyQt5`だと若干挙動が異なる可能性がありますから、もし何かありましたらコメントで教えてください。

**追記**

[code]

    self.edit1.textEdited.connect(self.write_lbl)
    
[/code]

こっちにしてみてください。急遽`PyQt5`に切り替えてみたら、最初のではエラーが出ました。  
だいぶ変わっていますね。失礼しました。


CC BY-SA 4.0
2018-10-27T01:13:15.187
49697
2018-10-27T01:44:04.220
2018-10-27T01:44:04.220
24284
24284
49696
answer