いつもこちらのサイトにはお世話になります。
Python3.7 Pyqt5で作成したlineEditが3つあります。
マウスでクリックした際、下のラベルにクリックされたlineEditのオブジェクト名を表示させたいのですがやり方がわからずにいます。
ご教授お願いいたします。
python
1from PyQt5 import QtCore, QtGui, QtWidgets 2 3class Ui_MainWindow(object): 4 def setupUi(self, MainWindow): 5 MainWindow.setObjectName("MainWindow") 6 MainWindow.resize(256, 267) 7 self.centralwidget = QtWidgets.QWidget(MainWindow) 8 self.centralwidget.setObjectName("centralwidget") 9 self.lineEdit = QtWidgets.QLineEdit(self.centralwidget) 10 self.lineEdit.setGeometry(QtCore.QRect(70, 60, 113, 20)) 11 self.lineEdit.setObjectName("lineEdit") 12 self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget) 13 self.lineEdit_2.setGeometry(QtCore.QRect(70, 90, 113, 20)) 14 self.lineEdit_2.setObjectName("lineEdit_2") 15 self.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget) 16 self.lineEdit_3.setGeometry(QtCore.QRect(70, 120, 113, 20)) 17 self.lineEdit_3.setObjectName("lineEdit_3") 18 self.label = QtWidgets.QLabel(self.centralwidget) 19 self.label.setGeometry(QtCore.QRect(40, 60, 30, 16)) 20 self.label.setObjectName("label") 21 self.label_2 = QtWidgets.QLabel(self.centralwidget) 22 self.label_2.setGeometry(QtCore.QRect(40, 90, 30, 16)) 23 self.label_2.setObjectName("label_2") 24 self.label_3 = QtWidgets.QLabel(self.centralwidget) 25 self.label_3.setGeometry(QtCore.QRect(40, 120, 30, 16)) 26 self.label_3.setObjectName("label_3") 27 self.label_4 = QtWidgets.QLabel(self.centralwidget) 28 self.label_4.setGeometry(QtCore.QRect(40, 150, 170, 30)) 29 font = QtGui.QFont() 30 font.setPointSize(9) 31 self.label_4.setFont(font) 32 self.label_4.setObjectName("label_4") 33 MainWindow.setCentralWidget(self.centralwidget) 34 self.menubar = QtWidgets.QMenuBar(MainWindow) 35 self.menubar.setGeometry(QtCore.QRect(0, 0, 256, 21)) 36 self.menubar.setObjectName("menubar") 37 MainWindow.setMenuBar(self.menubar) 38 self.statusbar = QtWidgets.QStatusBar(MainWindow) 39 self.statusbar.setObjectName("statusbar") 40 MainWindow.setStatusBar(self.statusbar) 41 42 self.retranslateUi(MainWindow) 43 QtCore.QMetaObject.connectSlotsByName(MainWindow) 44 45 def retranslateUi(self, MainWindow): 46 _translate = QtCore.QCoreApplication.translate 47 MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 48 self.label.setText(_translate("MainWindow", "1番")) 49 self.label_2.setText(_translate("MainWindow", "2番")) 50 self.label_3.setText(_translate("MainWindow", "3番")) 51 self.label_4.setText(_translate("MainWindow", "カーソルがあるオブジェクト名を表示")) 52 53 54if __name__ == "__main__": 55 import sys 56 app = QtWidgets.QApplication(sys.argv) 57 MainWindow = QtWidgets.QMainWindow() 58 ui = Ui_MainWindow() 59 ui.setupUi(MainWindow) 60 MainWindow.show() 61 sys.exit(app.exec_()) 62
その後、
ご教授頂いたソースを元にプログラムを修正しましたが
「installEventFilter(self, QObject): argument 1 has unexpected type 'Ui_MainWindow'」
というエラーになり悩んでおります。
https://stackoverflow.com/questions/50768366/installeventfilter-in-pyqt5
色々と調べて上記URLにたどり着き、QtDesignerで作成しているのが原因?
というところまでは何となく把握できたのですが、
どうプログラムを修正したらいいかわからずにいます。
恐れ入ります、今一度ご教授頂けないでしょうか。
以下、修正中のソースになります。
python
1import sys 2from PyQt5 import QtCore, QtGui, QtWidgets 3from PyQt5.QtWidgets import * 4from PyQt5.QtCore import * 5 6class Ui_MainWindow(object): 7 def setupUi(self, MainWindow): 8 MainWindow.setObjectName("MainWindow") 9 MainWindow.resize(256, 267) 10 self.centralwidget = QtWidgets.QWidget(MainWindow) 11 self.centralwidget.setObjectName("centralwidget") 12 self.lineEdit1 = QtWidgets.QLineEdit(self.centralwidget) 13 self.lineEdit1.setGeometry(QtCore.QRect(70, 60, 113, 20)) 14 self.lineEdit1.setObjectName("lineEdit1") 15 self.lineEdit2 = QtWidgets.QLineEdit(self.centralwidget) 16 self.lineEdit2.setGeometry(QtCore.QRect(70, 90, 113, 20)) 17 self.lineEdit2.setObjectName("lineEdit2") 18 self.lineEdit3 = QtWidgets.QLineEdit(self.centralwidget) 19 self.lineEdit3.setGeometry(QtCore.QRect(70, 120, 113, 20)) 20 self.lineEdit3.setObjectName("lineEdit3") 21 self.label = QtWidgets.QLabel(self.centralwidget) 22 self.label.setGeometry(QtCore.QRect(40, 60, 30, 16)) 23 self.label.setObjectName("label") 24 self.label_2 = QtWidgets.QLabel(self.centralwidget) 25 self.label_2.setGeometry(QtCore.QRect(40, 90, 30, 16)) 26 self.label_2.setObjectName("label_2") 27 self.label_3 = QtWidgets.QLabel(self.centralwidget) 28 self.label_3.setGeometry(QtCore.QRect(40, 120, 30, 16)) 29 self.label_3.setObjectName("label_3") 30 self.label_4 = QtWidgets.QLabel(self.centralwidget) 31 self.label_4.setGeometry(QtCore.QRect(40, 150, 170, 30)) 32 font = QtGui.QFont() 33 font.setPointSize(9) 34 self.label_4.setFont(font) 35 self.label_4.setObjectName("label_4") 36 MainWindow.setCentralWidget(self.centralwidget) 37 self.menubar = QtWidgets.QMenuBar(MainWindow) 38 self.menubar.setGeometry(QtCore.QRect(0, 0, 256, 21)) 39 self.menubar.setObjectName("menubar") 40 MainWindow.setMenuBar(self.menubar) 41 self.statusbar = QtWidgets.QStatusBar(MainWindow) 42 self.statusbar.setObjectName("statusbar") 43 MainWindow.setStatusBar(self.statusbar) 44 45 self.retranslateUi(MainWindow) 46 QtCore.QMetaObject.connectSlotsByName(MainWindow) 47 48 # イベントをフィルタ (監視) するウィジェットを設定する。 49 self.lineEdit1.installEventFilter(self) 50 self.lineEdit2.installEventFilter(self) 51 self.lineEdit3.installEventFilter(self) 52 53 def eventFilter(self, obj, event): 54 if event.type() == QEvent.FocusIn: 55 # フォーカスが移るイベントが発生した場合、 56 # イベントが発生したオブジェクトの名前をラベルに設定する。 57 self.label.setText(obj.objectName()) 58 59 return super().eventFilter(obj, event) 60 61 62 def retranslateUi(self, MainWindow): 63 _translate = QtCore.QCoreApplication.translate 64 MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 65 self.label.setText(_translate("MainWindow", "1番")) 66 self.label_2.setText(_translate("MainWindow", "2番")) 67 self.label_3.setText(_translate("MainWindow", "3番")) 68 self.label_4.setText(_translate("MainWindow", "カーソルがあるオブジェクト名を表示")) 69 70 71if __name__ == "__main__": 72 import sys 73 app = QtWidgets.QApplication(sys.argv) 74 MainWindow = QtWidgets.QMainWindow() 75 ui = Ui_MainWindow() 76 ui.setupUi(MainWindow) 77 MainWindow.show() 78 sys.exit(app.exec_())
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/16 03:00
2019/10/16 04:44 編集
2019/10/16 05:37
2019/10/16 05:43
2019/10/16 06:17