1、介绍
pyqt提供了事件机制使用户和程序进行交互。
2、xxed方法
组件的类中声明的类似xxed形式的方法,用于表示事件,使用时将其调用connect方法,指定处理方法。
示例:
xx.clicked.connect(self.opt)
- 绑定组件对象的鼠标单击事件,如果触发,则调用opt方法
3、xxEvent方法
组件的类中声明xxEvent形式的方法,也是用于事件。有两种使用方式:
(1)如果当前类继承了QWidget,那么直接在当前类声明对应的xxEvent方法,写入操作的代码即可,当对应的事件发生时,则会调用该方法
(2)如果当前类没有继承QWidget,即是通过load加载ui文件实现布局。那么也可以在当前类声明对应的xxEvent方法,写入操作的代码,然后将xxEvent方法赋值给待监听对象的xxEvent
class my_window:
def __init__(self):
self.ui = loadUi('ui\\main_window_2.ui')
self.ui: QMainWindow
self.ui.enterEvent= self.enterEvent
# 显示窗口
self.ui.show()
def enterEvent(self, QEvent):
print("鼠标进来了")
4、event方法
def event(self, QEvent):
""" event(self, QEvent) -> bool """
return False
- 其和xxxEvent方法使用类似
- 参数是事件对象,如果被触发,返回bool类型的True
- pyqt不建议使用该方法,而是重写具体的事件方法xxxEvent
5、信号机制
pyqt的信号机制有四个角色:
- 发送者:即产生信号的来源,可以是某一组件,也可能是键盘、鼠标等
- 信号:即事件类型,比如鼠标点击、键盘按下、状态改变、文本改变等
- 接受者:接收信号的组件,一般来说就是发送者自身组件
- 槽:也称为槽函数,是用于处理信号的方法,在接收信号的同时,可能还会接收一些其他信息,比如index、鼠标位置等
6、sender方法
sender(self) -> QObject
- 该方法返回一个QObject对象
- 作用是:在一个窗口中,多个组件的事件绑定到同一方法。在该方法中,可以调用当前窗口对象的sender方法,获取触发该方法的对象。
- 实际测试,只要是有效的对象,调用sender方法都可以成功获取。比如窗口对象、groupBox分组、按钮本身测试都实现
7、快捷键
7.1 setShortcut方法
"""
直接为组件设置快捷键,不区分事件类型,会调用该组件各种事件绑定的所有方法
"""
self.ui.pushButton_2.setShortcut('A')
self.ui.pushButton_2.setShortcut('shift+p')
7.2 声明
声明后即可使用,不需要再绑定到对象或者调用其方法
"""
以下声明可以为指定组件对象,调用指定方法
需要注意,基于该快捷键激活,此时sender方法获取到的是QShortcut对象
"""
QShortcut(QKeySequence("Escape"), self.ui.pushButton, self.click)
标签:self,pyqt5,xxEvent,ui,事件,组件,方法
From: https://www.cnblogs.com/wd404/p/17324449.html