pyqt5 鼠标操作

#资料  http://blog.sina.com.cn/s/blog_6483fa330102xo6w.html

例子import sysfrom PyQt5.QtWidgets import QApplication, QWidget, QLabelfrom PyQt5.QtGui import QCursorfrom PyQt5.QtCore import Qt

class Demo(QWidget):

def __init__(self):        super(Demo, self).__init__()        self.label = QLabel(‘Hello World‘, self)        self.label1=QLabel(‘喂  世界‘, self)        self.label1.move(0,30)        self.label2 = QLabel(‘鼠标位置‘, self)        self.resize(500,300)        self.label.resize(200,20)        self.label1.resize(200, 20)        self.label2.resize(400, 20)        self.label2.move(0, 60)        self.label3 = QLabel(‘鼠标位置‘, self)        self.label3.resize(400, 20)        self.label3.move(0, 90)

self.setMouseTracking(True)#设置鼠标移动跟踪是否有效        ‘‘‘        设置为True时,只要鼠标在窗口内移动时mouseMoveEvent事件就能捕获        设置为False时(默认),只有鼠标键按下并在窗口内移动时mouseMoveEvent事件才能捕获        注意只能是QWidget,如果是QMainwindow,则无效        self.hasMouseTracking()返回设置的状态        ‘‘‘

def mousePressEvent(self, event):  #鼠标键按下时调用(任意一个键),这些方法是许多控件自带的,这里来自于QWidget。        self.label.setText(‘鼠标键按下了‘)        n = event.button()  # 用来判断是哪个鼠标健触发了事件【返回值:0  1  2  4】        ‘‘‘        QtCore.Qt.NoButton - 0 - 没有按下鼠标键        QtCore.Qt.LeftButton -1 -按下鼠标左键        QtCore.Qt.RightButton -2 -按下鼠标右键        QtCore.Qt.Mion 或 QtCore.Qt.MiddleButton -4 -按下鼠标中键        ‘‘‘        nn=event.buttons() #返回前面所列枚举值的组合,用于判断同时按下了哪些键【不知怎么判断】  <PyQt5.QtCore.Qt.MouseButtons object at 0x0000003326982F98>

def mouseReleaseEvent (self, event):#参数1:鼠标的作用对象;参数2:鼠标事件对象,用来保存鼠标数据        self.label.setText(‘鼠标键放开了‘)

def mouseMoveEvent(self, event):#鼠标键按下并移动时调用        ret=self.hasMouseTracking()        self.label1.setText(‘鼠标移动了:%s‘%ret)        x=event.x ()  #返回鼠标相对于窗口的x轴坐标        y= event.y()  # 返回鼠标相对于窗口的y轴坐标        self.label2.setText(‘鼠标x坐标:%s  ,鼠标y坐标:%s‘%(x,y))        xy=event.pos()  #PyQt5.QtCore.QPoint(463, 0) 相对于窗口  【用xy.x()  xy.y()提取值】        s=self.mapToGlobal (xy)   #将窗口坐标转换成屏幕坐标.属于QWidget类的方法;参数类型QPoint        self.label3.setText(‘鼠标x坐标:%s  ,鼠标y坐标:%s‘%(xy.x(),xy.y()))        xy1=event.globalPos() #返回鼠标相对于屏幕的坐标。PyQt5.QtCore.QPoint(1096, 37)【用xy1.x()  xy1.y()提取值】        s1=self.mapFromGlobal(xy1)  #将屏幕坐标转换成窗口坐标.属于QWidget类的方法;参数类型QPoint        #mapToParent(QPoint) - 将窗口坐标转换成父窗口坐标。如果没有父窗口,则相当于mapToGlobal (QPoint)        #mapFromParent(QPoint) - 将父窗口坐标转换成窗口坐标。如果没有父窗口,则相当于mapFromGlobal(QPoint)        #mapTo (QWidget, QPoint) - 将窗口坐标转换成 QWidget父窗口坐标        px=event.globalX()   #返回相对于屏幕的x坐标        py=event.globalY()   #返回相对于屏幕的y坐标        s=event.windowPos() #相对于窗口的坐标(保留一位小数),PyQt5.QtCore.QPointF(481.0, 1.0)【用s.x()  s.y()提取值】        p=event.screenPos()  #相对于屏幕的坐标(保留一位小数).PyQt5.QtCore.QPointF(476.0, 49.0)【用p.x()  p.y()提取值】        t = event.timestamp()  # 返回事件发生的时间。【以程序运行开始计时,以毫秒为单位】

def mouseDoubleClickEvent(self,event): #鼠标双击时调用        self.label1.setText(‘双击了鼠标‘)        ‘‘‘双击时的事件顺序如下:MouseButtonPressMouseButtonReleaseMouseButtonDblClickMouseButtonPressMouseButtonReleaseQApplicaption类的setDoubleClickInterval( )方法可设置双击的时间间隔;doubleClickInterval( )方法返回双击的时间间隔。‘‘‘

def enterEvent (self, event):#鼠标移进时调用        print(‘鼠标移进窗口了‘)        self.setCursor(Qt.CrossCursor)#设置鼠标形状。需要from PyQt5.QtGui import QCursor,from PyQt5.QtCore import Qt        ‘‘‘        Qt.PointingHandCursor   指向手            Qt.WaitCursor  旋转的圆圈        ArrowCursor   正常箭头                 Qt.ForbiddenCursor 红色禁止圈        Qt.BusyCursor      箭头+旋转的圈      Qt.WhatsThisCursor   箭头+问号        Qt.CrossCursor      十字              Qt.SizeAllCursor    箭头十字        Qt.UpArrowCursor 向上的箭头            Qt.SizeBDiagCursor  斜向上双箭头        Qt.IBeamCursor   I形状                 Qt.SizeFDiagCursor  斜向下双箭头        Qt.SizeHorCursor  水平双向箭头          Qt.SizeVerCursor  竖直双向箭头        Qt.SplitHCursor                        Qt.SplitVCursor          Qt.ClosedHandCursor   非指向手          Qt.OpenHandCursor  展开手        ‘‘‘        #self.unsetCursor()   #取消设置的鼠标形状

def leaveEvent (self, event):  #鼠标移出时调用        print(‘鼠标移出窗口了‘)

def wheelEvent (self, event):#滚轮滚动时调用。event是一个QWheelEvent对象        angle = event.angleDelta()  #返回滚轮转过的数值,单位为1/8度.PyQt5.QtCore.QPoint(0, 120)        angle=angle/8  #除以8之后单位为度。PyQt5.QtCore.QPoint(0, 15)   【向前滚是正数,向后滚是负数  用angle.y()取值】        ang = event.pixelDelta()#返回滚轮转过的像素值  【不知为何  没有值】        #print(event.x(),event.y())    #返回鼠标相对于窗口的坐标        w=event.pos()  #返回相对于控件的当前鼠标位置.PyQt5.QtCore.QPoint(260, 173)        w1 = event.posF()  #返回相对于控件的当前鼠标位置.PyQt5.QtCore.QPointF(302.0, 108.0)        #坐标函数与上面相同

if __name__ == ‘__main__‘:    app = QApplication(sys.argv)    demo = Demo()    demo.show()    sys.exit(app.exec())

鼠标形状对应图



原文地址:https://www.cnblogs.com/liming19680104/p/10355888.html

时间: 2024-10-22 18:45:37

pyqt5 鼠标操作的相关文章

如何用OpenCV跟踪鼠标操作

转载:如何用OpenCV跟踪鼠标操作 http://blog.skyoung.org/2014/05/01/how-to-track-mouse/ 在视频第一帧手动标记出目标的位置是在线视觉跟踪中最基本的一个操作,实现这个操作需要检测鼠标的移动和点击事件.OpenCV提供了setMouseCallback这个函数来响应鼠标的动作,并返回鼠标在绑定窗口上的坐标位置.下面就这个函数的使用做一个简单的介绍. 首先,setMouseCallback的C++函数声明如下: 1 void onMouse(i

win7休眠的开启与关闭方法命令行操作和图文结合的鼠标操作

win7休眠的开启与关闭方法 从开始菜单中找到"附件→命令提示符",手工输入如下命令:powercfg -a,从这里可以清楚的看到,计算机是支持休眠的,显示"尚未启用休眠".仍然在命令提示符下进行操作,     开始休眠方法:手工键入如下命令: powercfg -hibernate on(关闭则为powercfg -hibernate off) 命令执行之后立即就可以生效,无需要重新启动系统,再次执行"powercfg -a"命令,这里会提示当

教你ZBrush快捷键与鼠标操作

ZBrush是一款3D图形绘制软件,功能十分强大,且比较复杂,除了菜单栏功能按钮,ZBrush®还提供了一系列快捷键与鼠标操作,熟练掌握ZBrush®快捷键与鼠标操作,可以帮助您大大节省图形创作时间.下面是快捷键与鼠标操作的具体指令及其对应的作用: 基础 工具 Tools                                                 F1 笔刷 Brushes                                               F2 笔触

用Mouse_event()来模拟鼠标操作(转载)

在自动化测试的开发中,有一些控件的ID是很难找到的,所以有些时候,我们直接设置鼠标的位置,然后是用click事件,会收到很好的效果.在Windows API中有个mouse_event函数为我们准备好了这一切. 这个函数在user32.dll这个库文件里面.我们可以在C:\WINDOWS\system32(XP系统)这个目录下找到这个文件,他是系统自带的. 我们以C#直接调用这个文件中的API为例子来说下怎么进行鼠标操作,首先在我们C#中声明引用,如果是一个基于From的程序,这个声明的位置写在

鼠标操作

一.鼠标操作SetMouseCallback() 1 #include<opencv2\opencv.hpp> 2 #include<iostream> 3 #include<vector> 4 using namespace cv; 5 using namespace std; 6 7 #define WINDOW_NAME "[程序窗口]" 8 9 void on_MouseHandle(int event, int x, int y, int

每天一个JavaScript实例-点击图片显示大图添加鼠标操作

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>每天一个JavaScript实例-点击图片显示大图添加鼠标操作</title> <style> img{padding:5px;width:100px;height:aut

ZBrush快捷键与鼠标操作

ZBrush是一款3D图形绘制软件,功能十分强大,且比较复杂,除了菜单栏功能按钮,ZBrush还提供了一系列快捷键与鼠标操作,熟练掌握ZBrush快捷键与鼠标操作,可以帮助您大大节省图形创作时间.下面是快捷键与鼠标操作的具体指令及其对应的作用: 基础 工具 Tools F1 笔刷 Brushes F2 笔触 Strokes F3 Alphas F4 纹理 Textures F5 材质 Materials F6 工具菜单 shift+F1 笔刷菜单 shift+F2 笔触菜单 shift+F3 A

selenium webDriver 鼠标操作

之前网上查资料都是 action2.click();  经测试不行的.最后发现action2.click().perform(); 才有效.至于为什么目前还不清楚,但至少会用了.现在就把我的代码copy过来: 代码示例: //只有对象是visible时才可以操作,所以要等待状态变为visible WebElement mC = driver.findElement(By.xpath("//div[contains(text(),'产品详情')]/../../div/img" )); i

WPF 中模拟键盘和鼠标操作

转载:http://www.cnblogs.com/sixty/archive/2009/08/09/1542210.html 更多经典文章:http://www.qqpjzb.cn/65015.html 其实SendKeys类提供的方法蛮好用的,可惜的是WPF中不能用了,说是WPF的消息循环方式改成了Dispatcher,所以直接调用System.Windows.Forms.SendKeys.Send()方法会报错. 不过没关系, 至少有use32的SendInput可用,通过P/Invoke