如何使用 pyautogui,以便即使有 2 个分辨率不同的屏幕,MoveTo 也能将我置于同一个位置?

问题描述 投票:0回答:1

这是我的代码:

import pyautogui

screen_width, screen_height = pyautogui.size()

def scale_positions(x, y, base_width=2560, base_height=1440):
    return int(x * screen_width / base_width), int(y * screen_height / base_height)

pyautogui.moveTo(*scale_positions(1415, 973))

我们的目标是尽管两个屏幕的分辨率不同,但使用 pyautogui 的 MoveTo 在同一个地方完成,但它不起作用

我将分辨率(使用 nvidia 控制面板)从 2560x1440(我的原始分辨率)更改为 1920x1080,并且光标不在同一个位置(我也完成了测试,当我进行测试时 pyautogui 告诉我我的分辨率是 1920x1080更改它,所以这不是因为我正在更改它并且我没有本机 1920x1080 屏幕)。

python cursor pyautogui
1个回答
0
投票

我希望你了解OOP

import pyautogui

class OrientationTwoMonitors():
    def __init__(self, base_width=2560, base_height=1440):
        self.screen_width, self.screen_height = pyautogui.size()
        self.base_width = base_width
        self.base_height = base_height


    def x(self, x):
        try:
            return (self.screen_width * (x / self.base_width))
        except Exception as e:
            print("x error: "+"\n",e)
            return 0

    def y(self, y):
        try:
            return self.screen_height * (y / self.base_height)
        except Exception as e:
            print("y error: "+"\n",e)
            return 0

    def scale_positions(self, x, y):
        screen_x, screen_y = self.x(x), self.y(y)
        return screen_x, screen_y
        

monitor_orient = OrientationTwoMonitors()
pyautogui.moveTo(monitor_orient.scale_positions(1415, 973))     
© www.soinside.com 2019 - 2024. All rights reserved.