PySide入门实战之五 | 信号与槽函数之鼠标、键盘等事件

news2025/3/2 1:07:40

在这里插入图片描述


🚀🚀🚀 Pyside6实战教程专栏目录入口:点击跳转


目录

  • 一、前期准备
  • 二、鼠标触发事件
    • 鼠标拖动窗口

一、前期准备

我们采用Pyside入门实战之四中通过QTDesigner创建的界面,具体由两个Label和一个Button组件构成(含背景),如下所示:
在这里插入图片描述

import sys
from PySide6.QtWidgets import QMainWindow, QApplication

from ui_main import Ui_MainWindow


class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setupUi(self)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = MainWindow()
    win.show()
    app.exec()

二、鼠标触发事件

import sys
from PySide6.QtWidgets import QMainWindow, QApplication
from PySide6 import QtGui
from PySide6.QtCore import Qt

from ui_main import Ui_MainWindow


class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setupUi(self)
        
		# 开启鼠标追踪
        self.setMouseTracking(True)  

    def mousePressEvent(self, event: QtGui.QMouseEvent):
        if event.button() == Qt.LeftButton:
            self.label.setText("点击了鼠标左键")

    def mouseMoveEvent(self, event: QtGui.QMouseEvent):
        self.label_2.setText(f"鼠标移动  x:{event.x()} y:{event.y()}")

    def mouseReleaseEvent(self, event: QtGui.QMouseEvent):
        if event.button() == Qt.LeftButton:
            self.label("释放了鼠标左键")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = MainWindow()
    win.show()
    app.exec()

鼠标拖动窗口

def mousePressEvent(self, event: QtGui.QMouseEvent):
    if event.button() == Qt.LeftButton:
        self.mouse_start_pt = event.globalPosition().toPoint()
        self.window_pos = self.frameGeometry().topLeft()
        self.drag = True

def mouseMoveEvent(self, event: QtGui.QMouseEvent):
    if self.drag:
        distance = event.globalPosition().toPoint() - self.mouse_start_pt
        self.move(self.window_pos + distance)

def mouseReleaseEvent(self, event: QtGui.QMouseEvent):
    if event.button() == Qt.LeftButton:
        self.drag = False

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【图书推荐】《数据资产管理核心技术与应用》

内容简介 《数据资产管理核心技术与应用》深入探讨数据资产管理的核心技术与应用,融入作者在大数据领域多年的丰富经验。《数据资产管理核心技术与应用》为读者提供一套可以落地的数据资产管理框架,并详解两个基于该框架进行数据资产管理的应用案例&…

[米联客-安路飞龙DR1-FPSOC] UDP通信篇连载-09 ICMP层程序设计

软件版本:Anlogic -TD5.9.1-DR1_ES1.1 操作系统:WIN10 64bit 硬件平台:适用安路(Anlogic)FPGA 实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板 板卡获取平台:https://milianke.tmall.com/ 登录“米联客”FPGA社区 ht…

github技巧和bug解决方法短篇收集

有一些几句话就可以说明白的观点或者解决的的问题,小虎单独收集到这里。 Commits没有算入每天的activity fork的仓库是不算的。 Commits made in a fork will not count toward your contributions. 参考: Contribution activity not shown for github…

win7一键修复所有dll缺失详细方法,7个dll修复方法深度解析(2024)

dll文件是一种包含函数和其他关键信息的文件,供 Windows 应用程序使用。虽然大多数普通用户对.dll 文件的具体工作原理并不熟悉,但这些文件对于系统应用来说是至关重要的。通常情况下,人们在遇到因 DLL 文件缺失或损坏而导致的错误时&#xf…

Vue3+Ts项目中经常遇到导入组件,vscode报无法找到模块xxx,xxx隐式拥有 “any“ 类型解决办法~

1、报错截图: 2、解决办法:在确保路径正确的情况下,你会在 src 目录下找到一个名为 env.d.ts 的文件(或者类似的名称)。在这个文件中,你可以声明 .vue 文件的模块类型。例如:(这告诉 TypeScript…

探索Cohere的Prompt Tuner:革新你的提示优化工具

在今天的文章中,我们将深入探讨Cohere的Prompt Tuner。这是一款在你指尖的提示优化工具,至少这是他们所宣称的。Prompt Tuner的主要理念是,它提供了一种最简化、最标准化的方式来生成你所需要的提示。而最棒的部分是,你不需要成为…

vtkConnectivityFilter提取连通区域中的问题

直接使用vtkConnectivityFilter提取连通区域&#xff0c;渲染上没问题&#xff0c;但是打印出polydata中的点数&#xff0c;发现跟原始数据是一致的。 for (int i 0; i < numRegions; i){vtkSmartPointer<vtkConnectivityFilter> connectivityFilter vtkSmartPointe…

嵌入式人工智能(树莓派4B基础实验代码等)

本专栏收录了近40个实验,含全部实验代码,都已经打包。 1、简介 本实验平台为树莓派4B,处理器4核ARMV8架构-A72,内存8G版本,SD卡容量为64G。操作系统版本lsb_release -a 操作系统内核为uname -a 本专栏收录了树莓派系统的基本知识,环境基本配置,常用Linux系统操作、基…

Ecovadis丨Ecovadis认证丨Ecovadis评估

EcoVadis 是以下这样的一个存在和具有以下这些特点等&#xff1a; 背景方面&#xff1a; 它源自法国 &#xff0c;前身由“携手实现可持续发展 - 全球化学联盟&#xff08;TFS - CI&#xff09;”、“联合国全球契约组织&#xff08;UN Global Compact&#xff09;”、IPE公众…

<数据集>腐烂水果识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;3304张 标注数量(xml文件个数)&#xff1a;3304 标注数量(txt文件个数)&#xff1a;3304 标注类别数&#xff1a;6 标注类别名称&#xff1a;[good apple, bad apple, good orange, bad orange, good banana, bad …

从“抠图”到“抠视频”,Meta上新AI工具SAM 2。

继2023年4月首次推出SAM&#xff0c;实现对图像的精准分割后&#xff0c;Meta于北京时间2024年7月30日推出了能够分割视频的新模型SAM 2&#xff08;Segment Anything Model 2&#xff09;。SAM 2将图像分割和视频分割功能整合到一个模型中。所谓“分割”&#xff0c;是指区别视…

Python 如何处理命令行参数(argparse)?

在Python编程中&#xff0c;处理命令行参数是一项非常重要的技能&#xff0c;特别是在编写可执行脚本或工具时。Python的标准库提供了一个强大的模块来处理命令行参数&#xff0c;即argparse模块。 一、argparse模块简介 argparse模块是Python标准库中用于解析命令行参数的模…

达梦数据库的系统视图v$mem_pool

达梦数据库的系统视图v$mem_pool 达梦数据库的V$MEM_POOL视图主要用于显示所有内存池的信息。通过查询这个视图&#xff0c;用户可以监控数据库中各个内存组件的使用状况&#xff0c;包括内存池的大小、使用情况等。这有助于用户判断内存池是否空闲或紧张&#xff0c;从而进行…

使用消息队列完成两个进程之间相互通信

/*执行两个程序&#xff0c;程序间通过一个消息队列实现同时收发消息*/ #include <myhead.h>// 消息队列的大小 #define SIZE (sizeof(struct msgbuf) - sizeof(long)) // 消息队列结构体 struct msgbuf {long mtype; // 消息类型char mtext[1024]; // 消息内容 };…

微服务面试必读:拆分、事务、设计的综合解析与实践指南

谈谈你对微服务的理解&#xff0c;微服务有哪些优缺点&#xff1f; 首先&#xff0c;微服务是对传统单体架构的一种优化。当一个单体架构随着业务的增加而变得臃肿时&#xff0c;微服务通过将业务拆分成小的独立单元来进行优化。 微服务的优点有以下几点&#xff1a; 业务清…

SpirngCloud+Vue3通过id批量修改某一个字段的值

♥️作者&#xff1a;小宋1021 &#x1f935;‍♂️个人主页&#xff1a;小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识&#xff0c;和大家一起努力呀&#xff01;&#xff01;&#xff01; &#x1f388;&#x1f388;加油&#xff01; 加油&#xff01…

MiniCPM 多模态VLM图像视频理解代码案例

参考: https://huggingface.co/openbmb/MiniCPM-V-2_6 https://github.com/OpenBMB/MiniCPM-V 效果很好,20g现场可以运行: 下载模型 export HF_ENDPOINT=https://hf-mirror.comhuggingface-cli download --resume-download --local-dir-use-symlinks False openbmb/MiniC…

公司居然还在用zookeeper,吓得我马上学习了相关命令

zookeeper的数据结构优点类似linux系统中的文件系统&#xff0c;例如/opt/mysql&#xff0c;/usr/local&#xff0c;都是可以有树形结构的&#xff0c;但是又有些不同&#xff0c;因为他的节点也是可以存储信息的&#xff0c;例如在linux中/usr/local 本来是个文件夹&#xff0…

STM32G474CBT6之HAL_RCC_ClockConfig()问题?

STM32G474CBT6之HAL_RCC_ClockConfig()问题&#xff1f; 很多人在用HAL库时&#xff0c;都用到了寄存器&#xff0c;特别是在数字电源案例中。我也在想&#xff0c;有了标准库&#xff0c;为什么要搞HAL库&#xff1f;HAL库降低了入门的门槛&#xff0c;但在实际应用中&#x…

24/8/6算法笔记 支持向量机

支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一种监督学习算法&#xff0c;主要用于分类和回归任务。它基于统计学习理论中的结构风险最小化原理&#xff0c;通过找到数据点之间的最优边界来实现模型的泛化能力。 import numpy as np import matplotlib.…