PyQt5 笔记8 -- 鼠标、键盘事件
PyQt5 笔记8 – 鼠标、键盘事件
参考博客(鼠标事件)
参考博客(键盘事件)
1、鼠标事件
事件:
- mousePressEvent (self, event):鼠标键按下事件
- mouseReleaseEvent (self, event):鼠标键公开事件
- mouseDoubieCiickEvent (self, event):双击鼠标事件
- mouseMoveEvent(self,event):鼠标移动事件
- enterEvent (self, event):鼠标进入控件事件
- leaveEvent (self, event):鼠标离开控件事件
- wheelEvent (self, event):滚轮滚动事件
方法:
- ignore():让父控件继续收到鼠标事件
- accept():不让父控件继续收到鼠标事件
- x()、y():返回相对于控件空间的鼠标坐标值
- pos():返回相对于控件空间的QPoint对象
- localPos():返回相对于控件空间的QPointF对象
- globalX()、globalY():返回相对于屏幕的x,y 坐标值
- globalPos():返回相对于屏幕的QPoint对象
- windowPos():返回相对于窗口的QPointF对象
- screenPos():返回相对于屏幕的QPointF对象
- angleDelta( ):返回QPoint对象,为滚轮转过的数值,单位为1/8度。angleX=event.angleDelta( ) .x(),angleY=event.angleDelta( ) .y()
- button():返回枚举值,用以判断是哪个鼠标健触发了事件
- QtCore.Qt.NoButton - 0 - 没有按下鼠标键。例如移动鼠标时的button()返回值
- QtCore.Qt.LeftButton - 1 - 按下鼠标左键
- QtCore.Qt.RightButton - 2 - 按下鼠标右键
- QtCore.Qt.Mion/QtCore.Qt.MiddleButton - 4 -按下鼠标中键
- buttons():返回前面所列枚举值的组合,用于判断同时按下了哪些键
- modifiers():判断按下了哪些修饰键(Shift,Ctrl , Alt,等),详见键盘事件的modifiers()
- timestamp():返回事件发生的时间;
- mapToGlobal (QPoint):将窗口坐标转换成屏幕坐标
- mapFromGlobal(QPoint):将屏幕坐标转换成窗口坐标
- mapToParent(QPoint):将窗口坐标转换成父窗口坐标。如果没有父窗口,则相当于mapToGlobal (QPoint)
- mapFromParent(QPoint):将父窗口坐标转换成窗口坐标。如果没有父窗口,则相当于mapFromGlobal(QPoint)
- mapTo (QWidget, QPoint):将窗口坐标转换成 QWidget父窗口坐标
- mapFrom (QWidget, QPoint):将 QWidget父窗口坐标转换成窗口坐标
- setCursor(QCursor qcr):参数qcr为QCursor对象或 Qtcore.Qt 类的枚举值,如:ArrowCursor(标准箭头)、upArrowCursor(向上箭头)、 CrossCursor(十字光标)、Waitcursor (沙漏),等等
- setCursor(QtCore.Qt.WaitCursor)
- unsetCursor() - 取消设置的鼠标形状
- cursor() - 返回当前鼠标形状的QCursor对象,使用QApplication类中的以下静态方法来控制整个应用程序的鼠标形状:
- setOverrideCursor(QCursor qcr):参数qcr为QCursor对象或 Qtcore.Qt 类的枚举值
- restoreOverrideCursor():取消全局鼠标形状设置,setOverrideCursor()和restoreOverrideCursor( )通常配合使用。
- changeOverrideCursor(QCursor qcr):将鼠标形状设置为qcr。只有先调用setOverrideCursor( )了,该函数才起作用
- overrideCursor( ) - 返回当前鼠标形状的QCursor 对象
实例:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog, QPushButton
from PyQt5.QtCore import QObject, Qt, pyqtSignal# 自定义信号类
class MySignal(QObject):instance = Nonestatus_signal = pyqtSignal(str)@classmethoddef my_signal(cls):if cls.instance:return cls.instanceelse:obj = cls()cls.instance = objreturn cls.instancedef status_emit(self, s):self.status_signal.emit(s)# 自定义按钮类,继承自QPushButton
class MyPushButton(QPushButton):def __init__(self, *args):super(MyPushButton, self).__init__(*args) # 打开鼠标追踪,如果不打开只有鼠标按下才会同时触发鼠标移到事件self.setMouseTracking(True)# 重写QPushButton中的鼠标移动事件def mouseMoveEvent(self, event):# 触发信号,并携带鼠标位置的字符串MySignal.my_signal().status_emit(str(event.pos().x())+str(event.pos().y()))self.update()class MainWindow(QMainWindow):"""主窗口类"""Status_signal = MySignal.my_signal().status_signaldef __init__(self, *args):super(MainWindow, self).__init__(*args)# 设置主窗口的标题及大小self.setWindowTitle('主窗口')self.resize(400, 300)# 使自定义的按钮类来实例化按钮self.btn = MyPushButton(self)self.btn.setText('自定义按钮')self.btn.move(50, 50)self.btn.clicked.connect(self.show_dialog)# 自定义信号绑定self.Status_signal.connect(self.show_status)# 在状态栏中显示字符串def show_status(self, s):self.statusBar().showMessage(s)if __name__ == '__main__':app = QApplication(sys.argv)demo = MainWindow()demo.show()sys.exit(app.exec())
2、键盘事件
事件:
- keyPressEvent(self, event):键盘按下事件
- focusInEvent(self, event):获得焦点事件
- focusOutEvent(self,even):失去焦点事件
方法:
- setFocus([reason]) - 如果控件在活动窗口中,调用此方法后,该控件成为输入焦点。reason参数可为QtCore.Qt类中的以下枚举变量:
- MouseFocusReason(0):使用鼠标获得焦点;
- TabFocusReason(1):按下了Tab键
- BacktabFocusReason(2):按下了组合键
- ActiveWindowFocusReason(3):窗口变为活动和非活动
- PopupFocusReason(4):打开或关闭弹出窗口
- ShortcutFocusReason(5):按下快捷键
- MenuBarFocusReason(6):通过菜单操作
- OtherFocusReaaon(7):其他方式
- clearFocus():去除输入焦点
- hasFocus():如果控件是输入焦点,返回True;否则,返回False;
实例:
# 重写键盘按下事件
def keyPressEvent(self, event):# 如果按下xxx则xxxif event.key() == Qt.Key_Home:print('Home')# 组合键elif (event.key() == Qt.Key_P):if QApplication.keyboardModifiers() == Qt.ShiftModifier:print('shift + p')else :print('p')else:QWidget.keyPressEvent(self, event)
PyQt5 笔记8 -- 鼠标、键盘事件相关推荐
- Python - selenium_WebDriver 鼠标键盘事件
from selenium import webdriver #引入ActionChains类 提供了鼠标的操作方法 from selenium.webdriver.common.action_cha ...
- java 模拟鼠标键盘_使用SWT模拟鼠标键盘事件
二.使用SWT中的鼠标键盘事件 在SWT的snippets中有两个例子用来介绍这两个方法的使用,如下: (1).模拟鼠标事件 * UI Automation (for testing tools) s ...
- Linux 模拟 鼠标 键盘 事件
/************************************************************************* Linux 模拟 鼠标 键盘 事件* 说明:* 以 ...
- c++ 读文件_第十六节:读文件,文件的创建,写文件,文件的读写以及鼠标键盘事件和图形绘制...
读文件 //读文件 文件的创建 public 写文件 public 文件的读写 重点: 文件类主要功能:创建,读属性,写属性,删除等 文件读写操作 File类 File类的对象 用来获取文件本身的信息 ...
- C#使用LibVLC实现播放遇到无法全屏及鼠标键盘事件问题解决
最近开发视频播放软件使用VLC实现流媒体播放,在使用libVLC自己进行集成播放控件时发现,播放窗口picturebox不响应鼠标键盘事件,无法进行双击或鼠标全屏播放功能的实现.原因是事件被vlc s ...
- python pyhook监听扫码_Python——pyHook监听鼠标键盘事件
pyHook包为Windows中的全局鼠标和键盘事件提供回调. 底层C库报告的信息包括事件的时间,事件发生的窗口名称,事件的值,任何键盘修饰符等. 而正常工作需要pythoncom等操作系统的API的 ...
- Selenium 利用 JS/JQ 操作元素、鼠标键盘事件、Cookie 操作
今天是持续写作的第 26 / 100 天. 如果你有想要交流的想法.技术,欢迎在评论区留言. 本篇博客主要学习 Selenium 中如何利用 JavaScript 与 JQuery 操作页面元素,以及 ...
- Javascript鼠标键盘事件
鼠标事件 click:单击 dblclick:双击 mousedown:鼠标按下 mouseup:鼠标抬起 mouseover:鼠标悬浮 mouseout:鼠标离开 mousemove:鼠标移动 mo ...
- python+webdriver学习鼠标键盘事件以及定位元素
设置浏览器大小:像素点 set_window_size(width,height) maximize_window() 浏览器全屏显示,不带参数 控制浏览器前进.后退: driver.forward( ...
最新文章
- 学习python的日常6
- php和python对比-PHP、Python和Javascript的装饰器模式对比
- python学习笔记-5.18
- 64MQQ2440烧写MINI2440光盘中的内容同样可以跑起来
- 农历控件源码(C#)
- B12-UIAlertController(NS_CLASS_AVAILABLE_IOS(8_0))。
- dockerhub 拉取地址_DockerHub 镜像仓库的使用详解
- 用函数实现simulink_VCU/BMS基于模型的开发---Simulink 代码集成
- javascript等待异步线程完成_前端:什么是单线程,同步,异步?彻底弄懂 JavaScript 执行机制...
- “新基建”横空出世,9本书助你把握7+2大领域风口
- filebeat 解析日志 并发送到Elasticsearch
- 转子接地保护原理_发电机转子一点接地:保护原理、整定方法、动作后果
- Android——Android Studio导入SlidingMenu类库的方法
- 单链表的插入删除以及逆转
- 蔚来汽车提交IPO招股书:三年亏百亿,腾讯为大股东
- SVN源码服务器搭建-详细教程(我的收藏)
- 超期天数计算机函数公式大全,Excel计算天数的函数与公式总结
- 别拿学历说事,这些天王中学没毕业,最低的是成龙
- c语言求50以内阶乘,C语言之数组50以内的阶乘.doc
- google play aab上传PAD的使用流程
热门文章
- Android APP的创意
- AD8609ARUZ 精密四路微功耗轨对轨输入/输出放大器 、 线性放大器仪表、运算放大器、缓冲放大器
- 前女友被腾讯挖走的那晚,我帮她...
- 【APICloud系列|2】上架安卓应用商店全套流程(小米应用商店、华为应用市场、阿里应用商店、百度手机助手、腾讯应用宝)
- Mac系统应该用什么软件进行清理?
- 计算机内存不足黑屏怎么办,只狼影逝二度游戏黑屏闪退内存不足解决方法推荐...
- 快乐学习!Python趣味练手项目:PyQ5模块实现通过中文名字识别性别
- Node.js和Vue
- php人群定向搜索,搜索人群定向功能
- Vue+Element 项目实战(一)