精华内容
下载资源
问答
  • Python鼠标键盘事件

    千次阅读 2013-05-05 14:30:41
    鼠标事件 所以得Tkinter事件都用字符串描述,格式为,type(Button,Return)指定事件种类,modifier是指Double这样的前缀,detail则是指具体的... 在按住鼠标按钮n的同时,鼠标发生移动  对组件双击或者三击,
    鼠标事件

    所以得Tkinter事件都用字符串描述,格式为<modifier-type-detail>,type(Button,Return)指定事件种类,modifier是指Double这样的前缀,detail则是指具体的鼠标按钮

    <ButtonPress-n>  鼠标指针在组件上方时,鼠标按钮n被按下,n为1左键,2中键,3右键,例如<ButtonPress-1> ,缩写形式为<Button-n> ,<n>
    <ButtonRelease-n>  鼠标按钮n被松开
    <Bn-Motion>   在按住鼠标按钮n的同时,鼠标发生移动
    <prefix-Button-n>  对组件双击或者三击,prefix可以选Double,Triple,比如<Double-Button-1>
    <Enter>   鼠标进入组件
    <Leave>   鼠标离开组件

    self.bind("<Button-1>",self.leftClick)

    def leftClick(self,event):
       event.x x轴坐标  event.y y轴坐标

    键盘事件
    <KeyPress>  按下任意的键


    <KeyRelease>   松开任意键
    <KeyPress-key>,<KeyRelease-key>  按下或者松开key
    <Key>,<Key-key> 分别是<KeyPress>,<KeyPress-key> 的简写形式,一般不要用这个简化形式
    <key>   <KeyPress-key>的简化形式,该格式只用于可打印字符(空格和小于符号不包含在内,呵呵???
            很奇怪哦)
    <Prefix-key>   在按住prefix的同时,按下key。prefix可选项是Alt,Shift,Control,当然也可以同时使用多个prefix,比如<Control-Alt-key>
    键盘中间的那些字母,外加(,。/ ' ; [ ] { } \ | ? > < : ")可以用event.char显示。event.char甚至可以显示中文,这一点让我尤为震惊,如果你绑定了一个KeyPress的事件,并且打印event.char,那些当你启动中文输入法的时候,你打的(一次性打的)最后一个字便是event.char,连打的话只能显示最后那个字。
    而event.keysym能够显示
    Escape,F1....F12,Scroll_Lock,Pause,Insert,Delete,Home,Prior(这个是page up),Next(这个是page down),End,Up,Right,Left,Down,Shitf_L,Shift_R,Control_L,Control_R,Alt_L,Alt_R,Win_L,App(这个键我从来没用过,位于右边的alt与ctrl之间),Caps_Lock,Tab,

    有的时候,输入法的不同也会影响这些值,
    比如用美式键盘的时候,event.keysym也可以显示(, . / ' ; [ ] | `这些)
    但是用搜狗的英文输入的时候就不能显示了

    ` quoteleft
    { braceleft
    [ bracketleft
    \ blackslash
    | bar
    ; semicolon
    : colon
    ' quoteright
    " quotedbl
    , comma
    . period
    / slash
    < less
    > greater

    展开全文
  • selenium + python 鼠标事件 十、鼠标事件 本章重点: ActionChains 类  context_click() 右击  double_click() 双击  drag_and_drop() 拖动 测试的产品中有一个操作是右键点击文件列表会弹出一...

    selenium + python 鼠标事件

    十、鼠标事件
    本章重点:
    ActionChains 类
    context_click()
    右击
    double_click()
    双击
    drag_and_drop()
    拖动
    测试的产品中有一个操作是右键点击文件列表会弹出一个快捷菜单,可以方
    便的选择快捷菜单中的选择对文件进行操作(删除、移动、重命名),之前学习
    元素的点击非常简单:
    driver.find_element_by_id(“xxx”).click()
    博客园—虫师
    http://fnng.cnblogs.com
    26
    那么鼠标的双击、右击、拖动等是否也是这样的写法呢?例如右击:
    driver.find_element_by_id(“xxx”).context_click()
    经过运行脚本得到了下面的错误提示:
    AttributeError: 'WebElement' object has no attribute 'context_click'
    提示右点方法不属于 webelement 对象,通过查找文档,发现属于
    ActionChains 类,但文档中没有具体写法。这里要感谢 北京-QC-rabbit 的指
    点,其实整个 python+selenium 学习过程都要感谢 北京-QC-rabbit 的指点。
    10.1、鼠标右键
    下面介绍鼠标右键的用法,以快播私有云为例:
    #coding=utf-8
    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    import time
    driver = webdriver.Firefox()
    driver.get("http://passport.kuaibo.com/login/?referrer=http%3A%2F%2Fwebcloud
    .kuaibo.com%2F")
    #登陆快播私有云
    driver.find_element_by_id("user_name").send_keys("username")
    driver.find_element_by_id("user_pwd").send_keys("123456")
    driver.find_element_by_id("dl_an_submit").click()
    time.sleep(3)
    #定位到要右击的元素
    qqq
    =driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[3]/table
    /tbody/tr/td[2]")
    #对定位到的元素执行鼠标右键操作
    ActionChains(driver).context_click(qqq).perform()
    博客园—虫师
    http://fnng.cnblogs.com
    27
    '''
    #你也可以使用三行的写法,但我觉得上面两行写法更容易理解
    chain = ActionChains(driver)
    implement =
    driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[3]/table/
    tbody/tr/td[2]")
    chain.context_click(implement).perform()
    '''
    time.sleep(3) #休眠3秒
    driver.close()
    这里需要注意的是,在使用 ActionChains 类之前,要先将包引入。
    右击的操作会了,下面的其它方法比葫芦画瓢也能写出来。
    10.2、鼠标双击
    鼠标双击的写法:
    #定位到要双击的元素
    qqq =driver.find_element_by_xpath("xxx")
    #对定位到的元素执行鼠标双击操作
    ActionChains(driver).double_click(qqq).perform()
    10.3、鼠标拖放
    鼠标拖放操作的写法:
    #定位元素的原位置
    element = driver.find_element_by_name("source")
    #定位元素要移动到的目标位置
    target =
    driver.find_element_by_name("target")
    博客园—虫师
    http://fnng.cnblogs.com
    28
    #执行元素的移动操作
    ActionChains(driver).drag_and_drop(element, target).perform()

    转载于:https://www.cnblogs.com/jane0912/p/4167059.html

    展开全文
  • python使用鼠标点击事件比较简单,在github上有人开源了一个PyMouse模块,简单几行代码就能模拟鼠标! https://github.com/pepijndevos/PyMouse/wiki/Documentation 该PyMouse有个简单的DEMO: 1 #...

     

    1、问题描述:

    最近百度总爱做一些破坏用户信任度的事——文库金币变券、网盘限速,吓得我赶紧想办法把存在百度云音乐中的歌曲下载到本地。

    http://yinyueyun.baidu.com/

    可问题是云音乐中并没有批量下载,而上面我总共存了700多首音乐!

    因此:有必要写一个脚本自动下载这些音乐了!!!

     

    2、解决问题

    自动下载歌曲有两种方法:

    • JS法
    • 模拟鼠标点击法

    由于考虑到JS法需要分析网页结构、寻找下载链接,工作量有点大,于是选择用模拟鼠标点击法!

    在linux上我首先想到用python来做这件事。

    用python使用鼠标点击事件比较简单,在github上有人开源了一个PyMouse模块,简单几行代码就能模拟鼠标!

    https://github.com/pepijndevos/PyMouse/wiki/Documentation

    该PyMouse有个简单的DEMO:

    复制代码
     1 # import the module
     2 from pymouse import PyMouse
     3 
     4 # instantiate an mouse object
     5 m = PyMouse()
     6 
     7 # move the mouse to int x and int y (these are absolute positions)
     8 m.move(200, 200)
     9 
    10 # click works about the same, except for int button possible values are 1: left, 2: right, 3: middle
    11 m.click(500, 300, 1)
    12 
    13 # get the screen size
    14 m.screen_size()
    15 # (1024, 768)
    16 
    17 # get the mouse position
    18 m.position()
    19 # (500, 300)
    复制代码

    因此,编写一个可以自动下载一页歌曲(20首)的脚本如下:

    该代码所做的主要任务是点击下载,然后再点击确定:

    注:如果只是两次点击如何解释21、22行代码?

    因为点击下载之后,会有个选择下载音质的弹框,音质有高、中、低三种,但是有些歌曲只有一种或两种音质可以选择。这导致弹框的位置有所不同(确定按钮的位置也随之不同),解决此问题一个“笨”方法是将可能区域都点一遍!

    复制代码
     1 # import the module
     2 from pymouse import PyMouse
     3 from time import sleep
     4 
     5 # instantiate an mouse object
     6 m = PyMouse()
     7 
     8 pos_x = 1120
     9 pos_y = 302
    10 pos_y_add = 38
    11 one_page_lines = 20
    12 
    13 select_button_x = 984
    14 select_button_y = 550
    15 
    16 sleep(2)
    17 
    18 for i in range(0,one_page_lines):
    19     m.click(pos_x,pos_y+i*38,1)
    20     sleep(2)
    21     for j in range(0,30):
    22         m.click(select_button_x,select_button_y+j*5,1)
    23     sleep(3)
    24     print(i)
    复制代码

     

    3、遗留问题

    上面脚本能在网速良好情况下将一页的歌曲下载到本地,接下来自然想到的是模拟鼠标拖动(拖动slide bar,切换至下一页20首歌曲)。

    于是我尝试写一个模拟鼠标拖动的脚本做个测试:

    复制代码
     1 # import the module
     2 from pymouse import PyMouse
     3 from time import sleep
     4 
     5 # instantiate an mouse object
     6 m = PyMouse()
     7 
     8 pos_x = 1120
     9 pos_y = 302
    10 pos_y_add = 38
    11 one_page_lines = 20
    12 
    13 select_button_x = 984
    14 select_button_y = 550
    15 
    16 slide_x = 1915
    17 slide_y = 312
    18 slide_dis = 1
    19 
    20 sleep(5)
    21 for page in range(1,40):
    22     m.press(slide_x,slide_y)
    23     slide_y = slide_y + slide_dis
    24     m.move(slide_x,slide_y)
    25     m.release(slide_x,slide_y)
    26     sleep(10)
    27 
    复制代码

    理论上每次滑动slide bar歌曲list移动的距离是相同的,而实测发现存在没有规律的误差!

    由于第二节中下载歌曲的脚本鼠标点击的start位置是固定的,因此一旦不能利用slide bar移动使歌曲列表恰好切到下一页,就会导致下载脚本点击事件点错地方。

    后续优化方向可以利用图像识别对slide bar移动进行校准~

     

    https://www.cnblogs.com/zjutlitao/p/6942729.html

    转载于:https://www.cnblogs.com/wilson403/p/11141707.html

    展开全文
  • python+openCV鼠标事件

    千次阅读 2019-04-25 17:18:17
    鼠标事件即包括:左键按下,左键松开,左键双击,鼠标移动等,主要需掌握函数cv2.setMouseCallback(windowName, onMouse [, param])及其对应的回调函数。下面一一进行介绍。 cv2.setMouseCallback(windowName, onMouse ...

    鼠标事件即包括:左键按下,左键松开,左键双击,鼠标移动等,主要需掌握函数cv2.setMouseCallback(windowName, onMouse [, param])及其对应的回调函数。下面一一进行介绍。

    cv2.setMouseCallback(windowName, onMouse [, param])

    • windowName:鼠标事件执行的窗口
    • onMouse:       回调函数
    • param:            用户自定义传入到回调函数中的参数

     

    回调函数形如:def callback(event,x,y,flags,param)

    event:鼠标事件,通过如下代码可以查看所有事件

    [i for i in dir(cv2) if 'EVENT' in i]
    1. 'EVENT_FLAG_ALTKEY',
    2. 'EVENT_FLAG_CTRLKEY',
    3. 'EVENT_FLAG_LBUTTON',
    4. 'EVENT_FLAG_MBUTTON',
    5. 'EVENT_FLAG_RBUTTON',
    6. 'EVENT_FLAG_SHIFTKEY',
    7. 'EVENT_LBUTTONDBLCLK',
    8. 'EVENT_LBUTTONDOWN',
    9. 'EVENT_LBUTTONUP',
    10. 'EVENT_MBUTTONDBLCLK',
    11. 'EVENT_MBUTTONDOWN',
    12. 'EVENT_MBUTTONUP',
    13. 'EVENT_MOUSEHWHEEL',
    14. 'EVENT_MOUSEMOVE',
    15. 'EVENT_MOUSEWHEEL',
    16. 'EVENT_RBUTTONDBLCLK',
    17. 'EVENT_RBUTTONDOWN',
    18. 'EVENT_RBUTTONUP'
    • x,y:     当前鼠标对应的坐标
    • flags:  是CV_EVENT_FLAG的组合,状态有:
    1. EVENT_FLAG_LBUTTON 
    2. EVENT_FLAG_RBUTTON 
    3. EVENT_FLAG_MBUTTON 
    4. EVENT_FLAG_CTRLKEY 
    5. EVENT_FLAG_SHIFTKEY 
    6. EVENT_FLAG_ALTKEY 
    • param: 用户自定义传入的参数


    下面通过一个简单的案例来实现鼠标画圆操作,代码如下:

    import cv2
    import numpy as np
    #新建图片
    img=np.zeros((500,500))
    #定义回调函数,此处只用到了event,x,y三个参数
    def draw_circle(event,x,y,flags,param):
        if event==cv2.EVENT_LBUTTONDBLCLK:
            #画圆函数,参数分别表示原图、坐标、半径、颜色、线宽(若为-1表示填充)
            cv2.circle(img,(x,y),20,255,-1)
    cv2.namedWindow('img')
    #新建鼠标事件
    cv2.setMouseCallback('img',draw_circle)
    while(1):
        cv2.imshow('img',img)
        if cv2.waitKey(1)==ord('q'):
            break
    cv2.destroyAllWindows()

    拓展:现通过结合滑动条和鼠标事件绘制不同半径大小的圆,代码如下:

    import cv2
    import numpy as np
    #新建图片
    img=np.zeros((500,500))
    #初始半径为5
    radius=5
    #新建窗口
    cv2.namedWindow('img')
    #定义滑动条回调函数,修改半径值
    def circle_radius(x):
        global radius
        radius=x
    #新建滑动条,初始值5,最大值为50
    cv2.createTrackbar('radius','img',5,50,circle_radius)
    #定义鼠标事件回调函数,此处只用到了event,x,y三个参数
    def draw_circle(event,x,y,flags,param):
        global radius
        if event==cv2.EVENT_LBUTTONDBLCLK:
            #画圆函数,参数分别表示原图、坐标、半径、颜色、线宽(若为-1表示填充)
            cv2.circle(img,(x,y),radius,255,-1)
    #新建鼠标事件
    cv2.setMouseCallback('img',draw_circle)
    while(1):
        cv2.imshow('img',img)
        if cv2.waitKey(1)==ord('q'):
            break
    cv2.destroyAllWindows()

    GIF效果如下:

    #欢迎关注我的微信公众号

    展开全文
  • 鼠标事件 # 每个模拟事件后需加.perform() 才会执行 # context_click() 右击 # double_click() 双击 # drag_and_drop(source, target) 拖动 # move_to_element() 鼠标悬停 # move_to 移动 from selenium import ...
  • Python OpenCV:利用鼠标移动缩放图片

    千次阅读 2019-01-23 08:06:10
    在OpenCV中使用鼠标移动缩放图片 实现目标   在OpenCV中通过鼠标左键拖拽移动图片,通过鼠标滚轮前后旋转放大缩小图片。 实现背景   在前一篇博客&amp;amp;quot;在OpenCV中使用滚动条显示大图&amp;amp;...
  • #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/1/11 11:19 # @File : unittest_test9_2....鼠标事件:鼠标移动 ''' from selenium import webdriver from selenium.webdriver.common.by impor...
  • 鼠标移动到一个被分割的三角形上,这个三角形高亮显示,并且它的标签在图标题显示。 展示下演示结果: 完整代码: import matplotlib.pyplot as plt from matplotlib.tri import Triangulation from matplotlib....
  • 1、鼠标事件:# 每个模拟事件后需加.perform() 才会执行# context_click() 右击# double_click() 双击# drag_and_drop(source, target) 拖动# move_to_element() 鼠标悬停# move_to 移动 from selenium import ...
  • 钩住全局事件,注册热键,模拟鼠标移动和点击,等等。 非常感谢捐赠了包裹名称。 如果您正在寻找Cheddargetter.com客户端实现,请 。 特征 全局事件挂钩在所有鼠标设备上(捕获事件,而与焦点无关)。 侦听并...
  • 今天,我们就学习用Python来控制鼠标移动 文章目录制作准备安装Pyautogui安装PyHook3编写代码基础部分思路简介导入模块设置变量创建函数获取按键当前位置移动鼠标设置速度点击次数点击鼠标返回值调用函数完整代码 ...
  • Python-Tkinter事件处理

    2018-03-23 16:13:18
    所谓 event 事件就是程序上发生的事。例如用户敲击键盘上的某一个键或是点击移动鼠标。而对于这些事件,程序需要做出反应。 Tkinter 提供的组件通常都包含许多内在行为
  • selenium-webdriver(python) (十五) -- 鼠标事件 本节重点: ActionChains 类  context_click() 右击 double_click() 双击 drag_and_drop() 拖动   测试的产品中有一个操作是右键点击文件...
  • 实际工作中,可能会遇到某个页面元素,必须要把鼠标移动到上面才能显示出元素,或者元素需要鼠标双击等,或者需要键盘点击某个按键,那么这类操作, selenium给我们提供了ActionChains类,处理这些事件。 一、鼠标...
  • python入门07 事件 pygame

    2021-04-19 09:57:22
    事件 一、概念 大多数程序自始至终沿着一条可以预测的路径运行,可能中间穿插着循环...打开 Windows 计算机时,启动后它只是“原地不动”,不会启动任何程序,也不会看到鼠标光标在屏幕上移动。不过,如果开始移动或.
  • Python-OpenCV-(8)-鼠标事件

    千次阅读 2018-12-11 10:43:21
    鼠标事件 鼠标事件就是对鼠标的操作。... 鼠标指针位置移动 可通过: import cv2 events=[i for i in dir(cv2) if 'EVENT'in i] print events 来查看OpenCV所有的鼠标事件。 Event: EVENT...
  • True self.x0 = event.x() self.y0 = event.y() #鼠标释放事件 def mouseReleaseEvent(self,event): self.flag = False #鼠标移动事件 #由于加了if self.flag,所以等于只有flag = True,即鼠标点击并移动时,才会...
  • 捕获鼠标事件 所有widget类都含有四个鼠标事件,分别代表着双击,移动,单击,释放: ...# 如果想让他捕获所有鼠标移动事件,需要在父子控件中都设置setMouseTracking,如下: # self.setMouseTracking(Tru...
  • From: ... ... 测试的产品中有一个操作是右键点击文件列表会弹出一个快捷菜单,可以方便的选择快捷菜单中的选择对文件进行操作(删除、移动、重命名),之前学习元素的点击非常简单: driver.fin
  • 2、鼠标移动事件: 3、鼠标释放事件: 4、组合按键: 5、相对布局: 6、绝对布局: 7、表格布局: 8、表格数据: 9、树状层级目录: 1、鼠标点击事件: import tkinter win = tkinter.Tk() win.title(...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 146
精华内容 58
关键字:

python鼠标移动事件

python 订阅