這个腳本是爲了在編寫GUI自動化腳本時, 獲取屏幕上任意位置的準確的坐標值參數而寫.
參考于<
Win10中python3, 安裝pyautogui模凷:
pip install pyautogui
2.實現代碼
# 根據鼠標移動獲取鼠標的實時位置(坐標)
import time
import pyautogui as pg
try:
print("n---- Enter +C to exit:n")
width, height = pg.size() # 獲取屏幕尺寸(像素)
print(f"Display resolution: {width} * {height}") # 打印屏幕分辨率
print("Mouse position: ", end='') # 打印鼠标坐標值的前半句
while True: # 更新坐標值的無限循環
x, y = pg.position() # 獲取鼠標坐標值
po_str = f"{str(x).rjust(4)}, {str(y).rjust(4)}" # 拼接坐標值字符串, 非得限定位數不可
print(po_str, end='') # 打印坐標字符串
time.sleep(0.01) # 等待0.01秒, 降低CPU佔用率
print('b'*len(po_str), end='', flush=True) # 使用退格鍵清空上一个坐標值
except KeyboardInterrupt: # 按下+C結束程序
exit('nn---- Bye.n')
注意, sleep()延時函數的必要性, 在無此句時, CPU負荷在10%左右; 添加此句後, 在不影响顯示效果的同時(畢竟每秒刷新100下呢!), CPU負荷驟降到了0.3%, 畢竟, 死循環語句如果不在內部設置延時操作, 就相當于要求CPU全力以赴僅僅爲這一个程序發力, 並不值得.
另外, 坐標值字符串的拼接和'b'退格字符的配合也很巧妙, 不會出現因爲坐標值實際位數(如0, 14, 872, 2109)的變化導致更新顯示的錯誤.
3.實現效果
我的屏幕是2560*1080的, 圖中數值的變化是我依次移動鼠標到四个角的變化, 很方便.
4.擴展, 添加RGB值顯示
核心是使用pyautogui模凷的screenshot()函數獲取屏幕快照, 再使用getpixel()函數獲取指定點的RGB值, 這在GUI自動化腳本中, 可作爲定位的參考, 是有一定意義的.
實現代碼如下:
# 根據鼠標移動獲取鼠標的實時坐標值和RGB值
import time
import pyautogui as pg
try:
print("n---- Enter +C to exit:n")
width, height = pg.size() # 獲取屏幕尺寸(像素)
print(f"Display resolution: {width} * {height}n") # 打印屏幕分辨率
while True: # 更新坐標值和RGB值的無限循環
x, y = pg.position() # 獲取鼠標坐標值
rgb = pg.screenshot().getpixel((x, y)) # 獲取鼠標點的RGB值
# 拼接坐標值/RGB值字符串, 注意限定位數
po_co_str = f"Position: ({str(x).rjust(4)}, {str(y).rjust(4)}) ---- ColorRGB: ({str(rgb[0]).rjust(3)}, {str(rgb[1]).rjust(3)}, {str(rgb[2]).rjust(3)})"
print(po_co_str, end='') # 打印坐標字符串
time.sleep(0.01) # 等待0.01秒, 降低CPU佔用率
print('b'*len(po_co_str), end='', flush=True) # 使用退格鍵清空上一个坐標值
except KeyboardInterrupt: # 按下+C結束程序
exit('nn---- Bye.n')
實現效果如下:
能準確地識別RGB值和坐標值
在這之後, 就可以根據獲得的坐標值和RGB值編寫GUI自動化腳本了!



