Python中是否有实现不同分辨率通用坐标转换的公式?参照AutoIt示例
1440p基准坐标跨分辨率适配实现
原AutoIt参考实现
Func _ConvertXY(ByRef $Xin, ByRef $Yin) $Xin = Round(($Xin / 2560) * @DesktopWidth) $Yin = Round(($Yin / 1440) * @DesktopHeight) EndFunc ;==>_ConvertXY $flashXa = 1059 $flashYa = 1285 ; 2560×1440基准桌面下的目标坐标 _ConvertXY($flashXa, $flashYa) ; 按比例换算为当前实际桌面尺寸下的坐标
对应Python实现
实现逻辑和原AutoIt版本完全对齐,以2560×1440为固定基准,自动适配当前设备的实际分辨率:
方案1:使用pyautogui(自动化场景常用,需先安装依赖)
依赖安装命令:pip install pyautogui
import pyautogui # 固定基准分辨率为1440p(2560×1440) BASE_WIDTH = 2560 BASE_HEIGHT = 1440 def convert_xy(x_in: int, y_in: int) -> tuple[int, int]: # 获取当前桌面实际宽高 actual_width, actual_height = pyautogui.size() # 按比例换算后取整 x_out = round((x_in / BASE_WIDTH) * actual_width) y_out = round((y_in / BASE_HEIGHT) * actual_height) return x_out, y_out # 调用示例 if __name__ == "__main__": base_x = 1059 base_y = 1285 converted_x, converted_y = convert_xy(base_x, base_y) print(f"适配后坐标:X={converted_x}, Y={converted_y}")
方案2:使用Python自带tkinter(无需安装第三方依赖)
import tkinter BASE_WIDTH = 2560 BASE_HEIGHT = 1440 def convert_xy(x_in: int, y_in: int) -> tuple[int, int]: root = tkinter.Tk() actual_width = root.winfo_screenwidth() actual_height = root.winfo_screenheight() root.destroy() x_out = round((x_in / BASE_WIDTH) * actual_width) y_out = round((y_in / BASE_HEIGHT) * actual_height) return x_out, y_out
内容的提问来源于stack exchange,提问作者GameBot
相关产品推荐
相关产品推荐

