Python?腳本中不同平臺(tái)顯示器分辨率的坐標(biāo)轉(zhuǎn)換

Python 腳本中不同平臺(tái)顯示器分辨率的坐標(biāo)轉(zhuǎn)換

顯示器坐標(biāo)系統(tǒng):

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

腳本示例:

>>> import pyautogui

>>> pyautogui.size()? ? #獲取屏幕分辨率

(1920, 1080)

>>> pyautogui.position()? #獲取當(dāng)前鼠標(biāo)坐標(biāo)

(187, 567)

假設(shè)屏幕分辨率為1024x768,那么1920x1080分辨率下的(187, 567)坐標(biāo)轉(zhuǎn)換為:

X=187*1024/1920

Y=567*768/1080

總結(jié)為:

假設(shè)A分辨率下坐標(biāo)是XA*YA, 那么XB*YB分辨率下的(xb,yb)坐標(biāo)轉(zhuǎn)換為:

xa=xb*XA/XB

ya=yb*YA/YB

基于以上換算,若:

python腳本中有若干個(gè)基于A分辨率下的坐標(biāo)值(AX1,AY1),(AX2,AY2),(AX3,AY3)...,如何整體換算為B分辨率下的坐標(biāo)值(BX1,BY1),(BX2,BY2),(BX3,BY3)...?


測(cè)試腳本(1920,1080):

import pyautogui

Pyautogui.click(1000,500)? ? ? ? #原始腳本中的坐標(biāo)值

Pyautogui.moveTo(100,50)

Pyautogui.doubleClick(800,600)

保存為coords.txt文本,放入f盤(pán)根目錄,做為待處理文本。


坐標(biāo)轉(zhuǎn)換代碼:

import re

X1,Y1 = 1920,1080? ? ? #修改為編寫(xiě)和調(diào)試原始腳本的顯示器系統(tǒng)的分辨率的值

X2,Y2 = 1024,768? ? ? ? #后續(xù)移植到其他平臺(tái)時(shí)的顯示器系統(tǒng)的分辨率的值

f = open('f:\coords.txt').readlines()

s = "transfer coords:"

with open('f:\coords.txt','a') as h:

? ? ? ? ? h.write('\n'*2+ s + '\n'*2)

for i in f:

? ? ? ? ? a1 = i.find('(')

? ? ? ? ? b1 = i.find(',')

? ? ? ? ? ? c1 = i.find(')')

? ? ? ? ? ? x1 = i[(a1+1):b1]

? ? ? ? ? ? y1 = i[(b1+1):c1]

? ? ? ? ? ? if bool(re.search(r'\d',i)):? ? ? ? ? #篩選出包含數(shù)字的行

? ? ? ? ? ? ? ? ? ? ? ? x = int(x1)*X2/X1

? ? ? ? ? ? ? ? ? ? ? ? y = int(y1)*Y2/Y1

? ? ? ? ? ? ? ? ? ? ? ? ? j = i.replace(x1,str(int(x)))

? ? ? ? ? ? ? ? ? ? ? ? ? k = j.replace(y1,str(int(y)))

? ? ? ? ? ? ? ? ? ? ? ? ? print (k)

? ? ? ? ? ? ? ? ? ? ? ? ? with open('f:\coords.txt','a') as h:? ? ? ? #追加寫(xiě)入文本

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? h.write(k)


轉(zhuǎn)換完成的文本內(nèi)容:

import pyautogui

Pyautogui.click(1000,500)? ? ? ? ? ? #原始腳本中的坐標(biāo)值

Pyautogui.moveTo(100,50)

Pyautogui.doubleClick(800,600)


transfer coords:

Pyautogui.click(533,355)? ? ? ? ? ? ? ? ? #移植到其他平臺(tái)時(shí)的坐標(biāo)值

Pyautogui.moveTo(53,35)

Pyautogui.doubleClick(426,426)


至此,實(shí)現(xiàn)了不同平臺(tái)顯示分辨率的坐標(biāo)值轉(zhuǎn)換,可以在后續(xù)的編程中方便地使用。首次發(fā)文,簡(jiǎn)書(shū)的編輯還不太習(xí)慣,程序輸入時(shí)注意行的格式。

---本文結(jié)束,歡迎拍磚---

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容