Python3.7 Pyqt5で作成したlineEditが4つあります。
マウスでクリックした際、4番目の lineEdit にフォーカスを移動させ、
4番目の lineEdit にクリックされた lineEditのオブジェクト名を表示する
というものを以前教えて頂いたサンプルを元に作成しました。
4番目の lineEdit にクリックされたオブジェクト名は表示できるのですが、
クリックされた lineEdit にカーソルが残ってしまいます。
最終的には画面にカーソルが4つ表示されてしまします。
クリックされた lineEdit にカーソルが表示されないようにするにはどうしたらよいでしょうか。
回避策をご教授お願い致します。
python
1import sys 2from PyQt5.QtWidgets import * 3from PyQt5.QtCore import * 4 5 6class MainWindow(QMainWindow): 7 def __init__(self): 8 super().__init__() 9 self.initUI() 10 11 def initUI(self): 12 self.lineEdit1 = QLineEdit("", self) 13 self.lineEdit1.setObjectName("lineEdit1") 14 self.lineEdit2 = QLineEdit("", self) 15 self.lineEdit2.setObjectName("lineEdit2") 16 self.lineEdit3 = QLineEdit("", self) 17 self.lineEdit3.setObjectName("lineEdit3") 18 self.lineEdit4 = QLineEdit("", self) 19 self.lineEdit4.setObjectName("lineEdit4") 20 21 vbox = QVBoxLayout() 22 vbox.addWidget(self.lineEdit1) 23 vbox.addWidget(self.lineEdit2) 24 vbox.addWidget(self.lineEdit3) 25 vbox.addWidget(self.lineEdit4) 26 27 central_widget = QWidget(self) 28 central_widget.setLayout(vbox) 29 self.setCentralWidget(central_widget) 30 31 # イベントをフィルタ (監視) するウィジェットを設定する。 32 self.lineEdit1.installEventFilter(self) 33 self.lineEdit2.installEventFilter(self) 34 self.lineEdit3.installEventFilter(self) 35 36 def eventFilter(self, obj, event): 37 if event.type() == QEvent.FocusIn: 38 # フォーカスが移るイベントが発生した場合、 39 # イベントが発生したオブジェクトの名前をラベルに設定する。 40 self.lineEdit4.setText(obj.objectName()) 41 self.lineEdit4.setFocus() 42 43 return super().eventFilter(obj, event) 44 45 46if __name__ == '__main__': 47 app = QApplication(sys.argv) 48 win = MainWindow() 49 win.show() 50 sys.exit(app.exec_()) 51
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/03 10:33
2019/12/04 01:18
2019/12/04 10:17
2019/12/05 04:19