質問編集履歴
2
プログラム修正、未解決のため再度投稿
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -68,4 +68,100 @@
|
|
|
68
68
|
MainWindow.show()
|
|
69
69
|
sys.exit(app.exec_())
|
|
70
70
|
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
その後、
|
|
75
|
+
ご教授頂いたソースを元にプログラムを修正しましたが
|
|
76
|
+
「installEventFilter(self, QObject): argument 1 has unexpected type 'Ui_MainWindow'」
|
|
77
|
+
というエラーになり悩んでおります。
|
|
78
|
+
|
|
79
|
+
https://stackoverflow.com/questions/50768366/installeventfilter-in-pyqt5
|
|
80
|
+
|
|
81
|
+
色々と調べて上記URLにたどり着き、QtDesignerで作成しているのが原因?
|
|
82
|
+
というところまでは何となく把握できたのですが、
|
|
83
|
+
どうプログラムを修正したらいいかわからずにいます。
|
|
84
|
+
恐れ入ります、今一度ご教授頂けないでしょうか。
|
|
85
|
+
以下、修正中のソースになります。
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
```python
|
|
89
|
+
import sys
|
|
90
|
+
from PyQt5 import QtCore, QtGui, QtWidgets
|
|
91
|
+
from PyQt5.QtWidgets import *
|
|
92
|
+
from PyQt5.QtCore import *
|
|
93
|
+
|
|
94
|
+
class Ui_MainWindow(object):
|
|
95
|
+
def setupUi(self, MainWindow):
|
|
96
|
+
MainWindow.setObjectName("MainWindow")
|
|
97
|
+
MainWindow.resize(256, 267)
|
|
98
|
+
self.centralwidget = QtWidgets.QWidget(MainWindow)
|
|
99
|
+
self.centralwidget.setObjectName("centralwidget")
|
|
100
|
+
self.lineEdit1 = QtWidgets.QLineEdit(self.centralwidget)
|
|
101
|
+
self.lineEdit1.setGeometry(QtCore.QRect(70, 60, 113, 20))
|
|
102
|
+
self.lineEdit1.setObjectName("lineEdit1")
|
|
103
|
+
self.lineEdit2 = QtWidgets.QLineEdit(self.centralwidget)
|
|
104
|
+
self.lineEdit2.setGeometry(QtCore.QRect(70, 90, 113, 20))
|
|
105
|
+
self.lineEdit2.setObjectName("lineEdit2")
|
|
106
|
+
self.lineEdit3 = QtWidgets.QLineEdit(self.centralwidget)
|
|
107
|
+
self.lineEdit3.setGeometry(QtCore.QRect(70, 120, 113, 20))
|
|
108
|
+
self.lineEdit3.setObjectName("lineEdit3")
|
|
109
|
+
self.label = QtWidgets.QLabel(self.centralwidget)
|
|
110
|
+
self.label.setGeometry(QtCore.QRect(40, 60, 30, 16))
|
|
111
|
+
self.label.setObjectName("label")
|
|
112
|
+
self.label_2 = QtWidgets.QLabel(self.centralwidget)
|
|
113
|
+
self.label_2.setGeometry(QtCore.QRect(40, 90, 30, 16))
|
|
114
|
+
self.label_2.setObjectName("label_2")
|
|
115
|
+
self.label_3 = QtWidgets.QLabel(self.centralwidget)
|
|
116
|
+
self.label_3.setGeometry(QtCore.QRect(40, 120, 30, 16))
|
|
117
|
+
self.label_3.setObjectName("label_3")
|
|
118
|
+
self.label_4 = QtWidgets.QLabel(self.centralwidget)
|
|
119
|
+
self.label_4.setGeometry(QtCore.QRect(40, 150, 170, 30))
|
|
120
|
+
font = QtGui.QFont()
|
|
121
|
+
font.setPointSize(9)
|
|
122
|
+
self.label_4.setFont(font)
|
|
123
|
+
self.label_4.setObjectName("label_4")
|
|
124
|
+
MainWindow.setCentralWidget(self.centralwidget)
|
|
125
|
+
self.menubar = QtWidgets.QMenuBar(MainWindow)
|
|
126
|
+
self.menubar.setGeometry(QtCore.QRect(0, 0, 256, 21))
|
|
127
|
+
self.menubar.setObjectName("menubar")
|
|
128
|
+
MainWindow.setMenuBar(self.menubar)
|
|
129
|
+
self.statusbar = QtWidgets.QStatusBar(MainWindow)
|
|
130
|
+
self.statusbar.setObjectName("statusbar")
|
|
131
|
+
MainWindow.setStatusBar(self.statusbar)
|
|
132
|
+
|
|
133
|
+
self.retranslateUi(MainWindow)
|
|
134
|
+
QtCore.QMetaObject.connectSlotsByName(MainWindow)
|
|
135
|
+
|
|
136
|
+
# イベントをフィルタ (監視) するウィジェットを設定する。
|
|
137
|
+
self.lineEdit1.installEventFilter(self)
|
|
138
|
+
self.lineEdit2.installEventFilter(self)
|
|
139
|
+
self.lineEdit3.installEventFilter(self)
|
|
140
|
+
|
|
141
|
+
def eventFilter(self, obj, event):
|
|
142
|
+
if event.type() == QEvent.FocusIn:
|
|
143
|
+
# フォーカスが移るイベントが発生した場合、
|
|
144
|
+
# イベントが発生したオブジェクトの名前をラベルに設定する。
|
|
145
|
+
self.label.setText(obj.objectName())
|
|
146
|
+
|
|
147
|
+
return super().eventFilter(obj, event)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def retranslateUi(self, MainWindow):
|
|
151
|
+
_translate = QtCore.QCoreApplication.translate
|
|
152
|
+
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
|
|
153
|
+
self.label.setText(_translate("MainWindow", "1番"))
|
|
154
|
+
self.label_2.setText(_translate("MainWindow", "2番"))
|
|
155
|
+
self.label_3.setText(_translate("MainWindow", "3番"))
|
|
156
|
+
self.label_4.setText(_translate("MainWindow", "カーソルがあるオブジェクト名を表示"))
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
if __name__ == "__main__":
|
|
160
|
+
import sys
|
|
161
|
+
app = QtWidgets.QApplication(sys.argv)
|
|
162
|
+
MainWindow = QtWidgets.QMainWindow()
|
|
163
|
+
ui = Ui_MainWindow()
|
|
164
|
+
ui.setupUi(MainWindow)
|
|
165
|
+
MainWindow.show()
|
|
166
|
+
sys.exit(app.exec_())
|
|
71
167
|
```
|
1
修正
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
マウスでクリックした際、下のラベルにクリックされたlineEditのオブジェクト名を表示させたいのですがやり方がわからずにいます。
|
|
5
5
|
ご教授お願いいたします。
|
|
6
6
|
|
|
7
|
+
|
|
7
8
|
```python
|
|
8
9
|
from PyQt5 import QtCore, QtGui, QtWidgets
|
|
9
10
|
|