首页 > 其他分享 >pyqt5-事件

pyqt5-事件

时间:2023-04-16 23:46:06浏览次数:41  
标签:self pyqt5 xxEvent ui 事件 组件 方法

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

相关文章

  • pyqt5-布局
    1、介绍pyqt可以基于designer快速进行布局,所见即所得,不用关心代码。2、绝对布局通过组件的move和update等方法,可以设置组件的左上顶角在父组件的中的绝对位置,从而实现布局。在实际开发中,可以用于窗口的位置设置,但是一般不用于窗口内组件的管理move(x,y)#x表示水平方向,y......
  • pyqt5-QWidget
    1、介绍QWidget是几乎所有pyqt组件的直接或间接父类,其声明的属性和方法很具有代表性。其他组件极大可能是直接使用,所以一般不再阐述。除非少数可能做了个性化覆写。2、类和初始化classQWidget(__PyQt5_QtCore.QObject,__PyQt5_QtGui.QPaintDevice):def__init__(self,p......
  • Hooks与事件绑定
    Hooks与事件绑定在React中,我们经常需要为组件添加事件处理函数,例如处理表单提交、处理点击事件等。通常情况下,我们需要在类组件中使用this关键字来绑定事件处理函数的上下文,以便在函数中使用组件的实例属性和方法。ReactHooks是React16.8引入的一个新特性,其出现让React的函数组......
  • 2023-04-15 uniapp 点击事件冒泡
    简而言之,即父子元素都有点击事件,这时候子元素触发点击事件会连同父元素的点击事件一并触发,这就是冒泡;而需求就是子不触父。解决方案:子元素的点击事件由原来的@click或者@tap统统换成@tap.stop,据说@tap.stop比@click.stop好。注:只需改变子元素点击事件,子变父不变。......
  • 区块链学习(10)-事件
    一、在Solidity中,emit关键字用于触发事件(Event)。事件是智能合约与区块链外部环境(如前端应用或者监控系统)进行通信的一种方式。当某些条件满足或某些操作发生时,智能合约可以通过触发事件通知外部环境。事件会将相关数据记录在交易的日志中,外部监听器可以订阅并解析这些日志,以便在事......
  • PyQt5 软件在 macOS HiDPI 模式下出现字体模糊的问题
    ​ Retina屏幕是苹果公司在2010年在 WWDC上发布的一种高密度像素的屏幕。HiDPI是一种渲染技术,它可以让Retina屏幕上的图像更加清晰。HiDPI技术会将图像渲染成两倍于原始分辨率的大小,然后再将其缩小到原始分辨率的大小,这样就可以让图像更加清晰。PyQt5编写的软件在Wi......
  • 用表格描述事件
    采用表格描述事件,用于axure制作事件动作      ......
  • 一统天下 flutter - widget 按钮类: Ink/InkWell/InkResponse - 让任意组件支持点击事
    一统天下flutterhttps://github.com/webabcd/flutter_demo作者webabcd一统天下flutter-widget按钮类:Ink/InkWell/InkResponse-让任意组件支持点击事件和点击效果示例如下:lib\widget\button\ink.dart/**Ink/InkWell/InkResponse-让任意组件支持点击事件和......
  • DevExpress_GridControl添加按钮列并添加按钮事件
      一、效果二、具体操作1、单击控件右上角三角RunDesigner2、配置按钮列把TextEditStyle属性设置为HideTextEditor;3、把Buttons的Kind属性设置为Glyph;Caption显示按钮名称4、给按钮添加按钮事件5、获取点击事件选中行的数据privatevoidrepositoryI......
  • vue中通过事件获取元素的值
    vue中通过事件获取元素的值原生js获取值<template><div><ul><li>姓名:<inputtype="text"id="name"/></li></ul><button@click="doSubmit()"class="submit">获取表单的......