QEventをPyQt5環境からPyQt6環境に移行する際のAttributeError: type object ‘QEvent’ has no attribute ‘Enter’の対処方法を説明する。
結論
PyQt5:QtCore.QEvent.Enter:
PyQt6:QtCore.QEvent.Type.Enter:
コード例
下記アプリを例に説明する。
PyQt5のコード
#!/usr/bin/env python3
from PyQt5.QtWidgets import (QApplication, QWidget, QLabel, QPushButton)
from PyQt5 import QtCore
import sys
class GuiWindow(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.build_ui()
self.show()
def build_ui(self):
self.ラベル = QLabel('', self)
self.ラベル.setGeometry(30,40,200,30)
self.カスガ = QPushButton('カスガ', self)
self.カスガ.setGeometry(30,100,100,30)
self.カスガ.installEventFilter(self)
self.よしお = QPushButton('よしお', self)
self.よしお.setGeometry(160,100,100,30)
self.よしお.installEventFilter(self)
self.カスガ.clicked.connect(self.clicked_kasuga)
self.よしお.clicked.connect(self.clicked_yoshio)
def clicked_kasuga(self):
self.ラベル.setText('アパ〜〜〜〜〜〜〜')
def clicked_yoshio(self):
self.ラベル.setText('ウィ〜〜〜〜〜〜〜')
def eventFilter(self, object, event):
if object == self.カスガ:
if event.type() == QtCore.QEvent.Enter: # ?
self.ラベル.setText('トゥース!')
elif event.type() == QtCore.QEvent.Leave: # ?
self.ラベル.setText('')
if object == self.よしお:
if event.type() == QtCore.QEvent.Enter: # ?
self.ラベル.setText('ピ~ヤ!')
elif event.type() == QtCore.QEvent.Leave: # ?
self.ラベル.setText('')
if event.type() == QtCore.QEvent.Leave: # ?
self.ラベル.setText('')
return False
if __name__ == '__main__':
app = QApplication(sys.argv)
window = GuiWindow()
sys.exit(app.exec())
PyQt6のコード
#!/usr/bin/env python3
from PyQt6.QtWidgets import (QApplication, QWidget, QLabel, QPushButton)
from PyQt6 import QtCore
import sys
class GuiWindow(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.build_ui()
self.show()
def build_ui(self):
self.ラベル = QLabel('', self)
self.ラベル.setGeometry(30,40,200,30)
self.カスガ = QPushButton('カスガ', self)
self.カスガ.setGeometry(30,100,100,30)
self.カスガ.installEventFilter(self)
self.よしお = QPushButton('よしお', self)
self.よしお.setGeometry(160,100,100,30)
self.よしお.installEventFilter(self)
self.カスガ.clicked.connect(self.clicked_kasuga)
self.よしお.clicked.connect(self.clicked_yoshio)
def clicked_kasuga(self):
self.ラベル.setText('アパ〜〜〜〜〜〜〜')
def clicked_yoshio(self):
self.ラベル.setText('ウィ〜〜〜〜〜〜〜')
def eventFilter(self, object, event):
if object == self.カスガ:
if event.type() == QtCore.QEvent.Type.Enter: # ?
self.ラベル.setText('トゥース!')
elif event.type() == QtCore.QEvent.Type.Leave: # ?
self.ラベル.setText('')
if object == self.よしお:
if event.type() == QtCore.QEvent.Type.Enter: # ?
self.ラベル.setText('ピ~ヤ!')
elif event.type() == QtCore.QEvent.Type.Leave: # ?
self.ラベル.setText('')
if event.type() == QtCore.QEvent.Type.Leave: # ?
self.ラベル.setText('')
return False
if __name__ == '__main__':
app = QApplication(sys.argv)
window = GuiWindow()
sys.exit(app.exec())
まとめ
‘QEvent’ has no attribute ‘Enter’の対処方法を説明した。
コメント