python - 在 PyQt5 中安装EventFilter
问题描述
我正在尝试在 PyQT5 中实现一个事件,但出现此错误:
TypeError: installEventFilter(self, QObject): argument 1 has unexpected type 'MainWindow_EXEC'
这是我的代码
import sys
from time import sleep
from PyQt5 import QtCore, QtWidgets
from view_cortes2 import Ui_cortes2enter
class MainWindow_EXEC():
def __init__(self):
app = QtWidgets.QApplication(sys.argv)
cortes2 = QtWidgets.QMainWindow()
self.ui = Ui_cortes2()
self.ui.setupUi(cortes2)
self.flag = 0
self.ui.ledit_corteA.installEventFilter(self)
self.ui.ledit_corteB.installEventFilter(self)
self.ui.buttonGroup.buttonClicked.connect(self.handleButtons)
cortes2.show()
sys.exit(app.exec_())
def eventFilter(self, source, event):
if (event.type() == QtCore.QEvent.FocusIn and source is self.ui.ledit_corteA):
print("A")
self.flag = 0
if (event.type() == QtCore.QEvent.FocusIn and source is self.ui.ledit_corteA):
print("B")
self.flag = 1
return super(cortes2, self).eventFilter(source, event)
if __name__ == "__main__":
MainWindow_EXEC()
我要添加的事件是当我关注 TextEdit 时,它会更改标志的值。如果我改变
self.ui.ledit_corteA.installEventFilter(self)
经过
self.ui.ledit_corteA.installEventFilter(cortes2)
我工作,但从不改变我的旗帜的价值。
请帮忙。
解决方案
installEventFilter
期望 a QObject
,而在您的情况下MainWindow_EXEC
不是。
如果您使用的是 Qt Designer 设计,建议创建一个继承自相应小部件的新类,并使用 Qt Designer 提供的类来填充它,如下所示:
import sys
from PyQt5 import QtCore, QtWidgets
from view_cortes2 import Ui_cortes2
class MainWindow(QtWidgets.QMainWindow, Ui_cortes2):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
self.flag = 0
self.ledit_corteA.installEventFilter(self)
self.ledit_corteB.installEventFilter(self)
#self.buttonGroup.buttonClicked.connect(self.handleButtons)
def eventFilter(self, source, event):
if event.type() == QtCore.QEvent.FocusIn and source is self.ledit_corteA:
print("A")
self.flag = 0
if event.type() == QtCore.QEvent.FocusIn and source is self.ledit_corteB:
print("B")
self.flag = 1
return super(MainWindow, self).eventFilter(source, event)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
参考:
推荐阅读
- algorithm - 给定边的最短路径
- django - 将过滤后的数据传递给模板时出错。未找到反向。已尝试 1 种模式。应该使用什么查询来避免此错误?
- expo - 安装后运行 expo --version 时找不到 expo 命令
- syslog - syslog 和 kern.log 文件很大
- python - 构建一个梦幻足球应用程序。如果玩家名称不在 JSON 数据文件中,则将分数设置为零。听起来很简单,但我如何让它工作呢?
- python - 创建数组列但出现错误:TypeError: 'list' object is not callable in PySpark
- python - 我想使用 PyPDF 模块获取 pdf 文件中的所有字段,得到错误:- TypeError: 'NoneType' object is not iterable
- spring-boot - Olingo JPA oData 中的角色管理
- php - 使用 TCPDF 库生成的 PDF 无法在 adobe acrobat reader 中打印,但可以预览
- c# - WPF,对于 listView 中的 Properties.Settings (StringCollection) 的 OnPropertyChanged 不起作用