You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:15:06