华南俳烁实业有限公司

python

當(dāng)前位置:中華考試網(wǎng) >> python >> python編程基礎(chǔ) >> 文章內(nèi)容

python模擬點擊中如何實現(xiàn)區(qū)域的不同按鍵?

來源:中華考試網(wǎng)  [2020年11月26日]  【

  當(dāng)我們想要在某一點、某一位置重復(fù)步驟,這些不同位置上的相同操作對于小伙伴們來說都不是問題。但在實際的運用中,我們需要對不同位置點進行不同的按鍵操作,每一個位置需要不同的任務(wù)需求,這就比之前的單個任務(wù)目標(biāo)要難得多。今天小編先跟大家講一下操作的思路,再進行代碼模塊的試驗相信就不會那么困難了。

  假如想要實現(xiàn)鼠標(biāo)左鍵雙擊時根據(jù)所在的不同區(qū)域?qū)崿F(xiàn)不同的自動按鍵。

  思路:監(jiān)控鼠標(biāo)事件,判斷按鍵類型,如果是判斷雙擊保留上一次的點擊時間,自動按鍵最好新建線程,不然會卡在主線程。

  #coding=utf-8

  from pymouse import PyMouse, PyMouseEvent

  from pykeyboard import PyKeyboard, PyKeyboardEvent

  import time, threading

  import math

  ## 初始化參數(shù)區(qū)(全局變量)

  stop = False

  interval = 1

  is_running = False

  times = 10

  keys_mapping = {

  0 : ['1', '2', '3', '4'],

  10 : ['a', 'b'],

  1 : ['c', 'd'],

  11 : ['e', 'f'],

  } # 左上:0 右上:10 左下:1 右下:11

  mouse = PyMouse()

  keyboard = PyKeyboard()

  x_dim, y_dim = mouse.screen_size()

  ## 循環(huán)按鍵

  def loop(key):

  global stop

  global is_running

  global keyboard

python課程免費試聽預(yù)約

  • 地區(qū):
  • 姓名:
  • 手機:

  is_running = True

  for i in range(times):

  for k in keys_mapping[key]:

  if stop:

  print('stop')

  is_running = False

  return

  print(key, k)

  #keyboard.tap_key(k)

  time.sleep(interval)

  is_running = False

  ## 監(jiān)控鼠標(biāo)

  class Clickonacci(PyMouseEvent):

  last_ts = None

  last_x = None

  last_y = None

  last_button = None

  def __init__(self):

  PyMouseEvent.__init__(self)

  ## hori:1-上,-1-下

  def scroll(self, x, y, hori, press):

  print(x, y, hori)

  def click(self, x, y, button, press):

  if press:

  return

  global stop

  global x_dim

  global y_dim

  ts = time.time()

  # button:1-左鍵,2-右鍵,3-中鍵

  # press: True-按下,F(xiàn)alse-釋放

  if button == 1:

  ## 判斷雙擊

  if self.last_ts and ts-self.last_ts<0.3 and self.last_button==button:

  print('double click')

  if is_running == True:

  stop = True

  time.sleep(interval)

  stop = False

  ## 計算類型

  key = 10*math.floor(2.0*x/x_dim) + math.floor(2.0*y/y_dim)

  t = threading.Thread(target=loop, name='LoopThread', args=(key,))

  t.start()

  self.last_ts = ts

  self.last_x = x

  self.last_y = y

  self.last_button = button

  else:

  stop = True

  if __name__ == '__main__':

  #main()

  C = Clickonacci()

  C.run()

  本篇的代碼模塊比較復(fù)雜,因為涉及到了不同位置要實現(xiàn)不同按鍵的操作。

責(zé)編:fushihao

上一篇:python3中線程鎖Lock是什么?

下一篇: 沒有了

  • 會計考試
  • 建筑工程
  • 職業(yè)資格
  • 醫(yī)藥考試
  • 外語考試
  • 學(xué)歷考試
苍梧县| 龙井市| 卓尼县| 襄垣县| 溧阳市| 绵阳市| 工布江达县| 团风县| 通辽市| 吐鲁番市| 漳平市| 博野县| 柳江县| 饶河县| 桃源县| 镇坪县| 平山县| 逊克县| 常山县| 祥云县| 永和县| 应城市| 南宁市| 米林县| 华亭县| 杭州市| 漠河县| 连南| 思茅市| 仁布县| 修文县| 仙游县| 买车| 盐津县| 宁波市| 承德市| 德庆县| 闸北区| 象山县| 蕲春县| 平乐县|