这是我的代码:
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 屏幕)。
我希望你了解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))