Pyqt6PySide6 事件与事件的处理函数

news/2024/11/18 1:35:15/文章来源:https://www.cnblogs.com/holychan/p/18189337

什么是事件?

事件是程序收到外界的输入,处于某种状态时自动发送的信号。事件有固定的类型,每种类型有自己的处理函数,用户只要重写这些函数,即可达到特定的目的。通过事件可以用一个控件监测另外一个控件,并可过滤被监测控件发出的事件。

事件的类型与处理函数

事件的概念与实列

外界对PySide程序进行输入信息的过程称为事件,列如在窗口上单击鼠标,输入框中输入数据等,只要是外界对程序的输入,都可以称为事件。程序对外界的输入进行处理的过程称为事件处理,根据外界输入信息的不同,处理事件的函数也是不同的。

事件与信号/槽相似,但是又有不同。信号是指控件或窗口本身满足一定条件时,发送一个带数据的信息或不带数据的信息,需要编程人员为这个信息单独写处理这个信息的槽函数,并将信号和槽函数关联,发送信号时,自动执行与之关联的槽函数。而事件是外界对程序的输入,将外界的输入进行分类后交给函数处理,处理事件的函数是固定的,只需要编程人员把处理事件的函数重写,来达到处理外界输入的目的,而不需要将事件与处理事件的函数进行连接,系统会自动调用能处理事件的函数,并把相关数据作为实参传递给处理事件的函数。

下面是一个处理鼠标单击事件的程序,在窗口的空白处单击鼠标左键或右键,将会产生QMouseEvent事件,QMouseEvent事件的实例对象中有与鼠标事件相关的属性,如button()方法获取单击的是左键还是右键。QWidget窗口处理QMouseEvent事件的函数有mouseDoubleClickEvent(QMouseEvent)mouseMoveEvent(QMouseEvent)mousePressEvent(QMouseEvent)mouseReleaseEvent(QMouseEvent)moveEvent(QMoveEvent)

import sys
from PySide6.QtWidgets import (QApplication,QMainWindow,QVBoxLayout,QHBoxLayout,QStackedLayout,QLineEdit,QPushButton,QWidget,QTabWidget,QLabel,QToolBar,QWidgetAction,QDialog,QMessageBox,
)
from PySide6.QtCore import Qt
from PySide6.QtGui import QIconclass MainWindow(QMainWindow):def __init__(self):super().__init__()self.label = QLabel("Click in this window")self.setCentralWidget(self.label)def mousePressEvent(self, e):   # 鼠标点击事件处理程序if e.button() == Qt.MouseButton.LeftButton:self.label.setText("mousePressEvent LEFT")elif e.button() == Qt.MouseButton.MiddleButton:self.label.setText("mousePressEvent MIDDLE")elif e.button() == Qt.MouseButton.RightButton:self.label.setText("mousePressEvent RIGHT")def mouseReleaseEvent(self, e):     # 鼠标释放事件处理程序if e.button() == Qt.MouseButton.LeftButton:self.label.setText("mouseReleaseEvent LEFT")elif e.button() == Qt.MouseButton.MiddleButton:self.label.setText("mouseReleaseEvent MIDDLE")elif e.button() == Qt.MouseButton.RightButton:self.label.setText("mouseReleaseEvent RIGHT")def mouseDoubleClickEvent(self, e):if e.button() == Qt.MouseButton.LeftButton:self.label.setText("mouseDoubleClickEvent LEFT")elif e.button() == Qt.MouseButton.MiddleButton:self.label.setText("mouseDoubleClickEvent MIDDLE")elif e.button() == Qt.MouseButton.RightButton:self.label.setText("mouseDoubleClickEvent RIGHT")app = QApplication(sys.argv)
window = MainWindow()
window.show()app.exec()

QEvent类

QEvent类是所有事件的基类,它在QtCore模块中。外界输入给程序的信息首先交给QEvent进行分类,得到不同类型的事件,然后系统将事件及相关信息交给控件或窗口的事件处理函数进行处理,得到对外界输入的响应。QEvent类的属性只有accepted

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/708453.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言编程题练习 (从初识到入门再到进阶)修正版

C语言编程题练习 📔(从初识到入门再到进阶) 小飞机 🛬#include<stdio.h>int main() {printf(" ** \n");printf(" ** \n");printf("***************\n");printf("***************\n");printf("…

生物医学顶刊论文(JBHI-2024):TransFOL:药物相互作用中复杂关系推理的逻辑查询模型

(2024.5.17)JBHI-TransFOL:药物相互作用中复杂关系推理的逻辑查询模型 论文题目:TransFOL: A Logical Query Model for Complex Relational Reasoning in Drug-Drug Interaction 论文期刊:Journal of Biomedical and Health Informatics (JBHI) 论文地址:https://ieeexplor…

2024-05-18:用go语言,给定一个从 0 开始的字符串 s,以及两个子字符串 a 和 b,还有一个整数 k。 定义一个“美丽下标”,当满足以下条件时: 1.找到字符串 a 在字符串 s 中的位

2024-05-18:用go语言,给定一个从 0 开始的字符串 s,以及两个子字符串 a 和 b,还有一个整数 k。 定义一个“美丽下标”,当满足以下条件时: 1.找到字符串 a 在字符串 s 中的位置,且该位置范围为 0 <= i <= s.length - a.length。 2.找到字符串 b 在字符串 s 中的位置…

Windows 环境多服务文件同步

多服务器文件同步的目标是将 SSCMS 系统生成的站点文件以及图片、附件等站点资源文件同步至独立服务器并对外提供访问,以避免直接将 SSCMS 系统暴露在外网。 我们推荐使用免费开源的 rsync 软件进行跨服务器文件同步,除了 rsync 软件之外,您也可以使用其他第三方软件进行文件…

【Python】强化学习SARSA走迷宫

之前有实现Q-Learning走迷宫,本篇实现SARSA走迷宫。 Q-Learning是一种off-policy算法,当前步采取的决策action不直接作用于环境生成下一次state,而是选择最优的奖励来更新Q表。 更新公式:SARSA是一种on-policy算法,当前步采取的策略action既直接作用于环境生成新的state,…

编译mmdetection3d时,无root权限下为虚拟环境单独创建CUDA版本

在跑一些深度学习代码的时候,如果需要使用mmdetection3d框架,下载的pytorch的cudatoolkit最好需要和本机的cuda版本是一样的,即输入nvcc -V命令后显示的版本一样。 但是如果是在学校里,一般是服务器管理员装的cuda驱动是啥版本,cudatoolkit就是啥版本,且非root用户改变不…

原型设计工具

当下主流的原型设计工具有Axure、Figma、Pixso、墨刀。 一.Axure Axure,全称叫做 Axure RP 。Axure是一款功能强大的原型设计工具,被广泛用于用户体验(UX)和用户界面(UI)设计。这算是目前原型图领域最常用的工具,有着丰富的交互设计功能,可创建各种高保真、低保真的交互…

前端传递不同格式时间后端统一转化

这几天遇到了一个问题,就是我后端再接受查询条件的时候,关于条件我都是用 TimeQuery 来接受的,但是因为前端的比较混乱,就导致了有些传参是年月日,有些传参是年月日时分秒格式,就导致我后端一直出转化异常的错误,当时就是叫前端传参都用下统一的格式 package com.state.…

XYCTF2024

XYCTF2024 warm up 又是md5 源码 <?php include next.php; highlight_file(__FILE__); $XYCTF = "Warm up"; extract($_GET);if (isset($_GET[val1]) && isset($_GET[val2]) && $_GET[val1] != $_GET[val2] && md5($_GET[val1]) == md5(…

一文彻底整明白,基于Ollama工具的LLM大语言模型Web可视化对话机器人部署指南

在上一篇博文中,我们在本地部署了**Llama 3 8B**参数大模型,并用 Python 写了一个控制台对话客户端,基本能愉快的与 Llama 大模型对话聊天了。但控制台总归太技术化,体验不是很友好,我们希望能有个类似 ChatGPT 那样的 Web 聊天对话界面,本博文就安排起来……在上一篇博文…

常见Windows图标和缩略图问题的解决方法 steam图标变白、变地球

常见Windows图标和缩略图问题的解决方法 steam图标变白、变地球原文地址:https://itxiaozhang.com/common-windows-icon-thumbnail-issues-solutions/ 此教程配合视频学习效果最佳,视频教程在文章末尾。Windows桌面图标问题指南 在使用Windows操作系统时,我们经常会遇到各种…

使用GET方法访问网站

使用GET方法访问网站 服务器接收get参数 server.pyimport flask app = flask.Flask(__name__) @app.route(/) def index():province = flask.request.args.get(province)city = flask.request.args.get(city)print(province, city)return province+","+citydebug=Tru…