Screen update

dev-linux
Ivan Maslov 2 years ago
parent 4d98aaa358
commit af476acde7

@ -21,22 +21,31 @@ pyOpenRPA - роботы помогут!
************************
Класс Box
************************
Экземпляр класса pyscreeze.Box, который характеризует прямоугольную убласть на экране.
Экземпляр класса pyscreeze.Box, который характеризует прямоугольную область на экране.
top - координата левой верхней точки в пикселях по оси X (горизонталь)
left - координата левой верхней точки в пикселях по оси Y (вертикаль)
height - расстояние вниз от левой верхней точки в пикселях
width - расстояние вправо от левой верхней точки в пикселях
************************
Класс Point
************************
Экземпляр класса pyscreeze.Point, который характеризует точку на экране.
x - координата точки в пикселях по оси X (горизонталь)
y - координата точки в пикселях по оси Y (вертикаль)
************************************************
Символьное указание точки (inPointRuleStr)
************************************************
LU| |RU
LU|CU|RU
--------
|CC|
LC|CC|RC
--------
LD| |RD
LD|CD|RD
Символьное указание точки - точка относительно которой выполнить изменение прямоугольной области.

@ -29,6 +29,7 @@ def Click(inXInt:int=None, inYInt:int=None, inClickCountInt:int=1, inIntervalSec
:param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию установлено в настройках модуля Mouse (базовое значение 0.4)
:type inWaitAfterSecFloat: float, опциональный
"""
if inWaitAfterSecFloat == None: inWaitAfterSecFloat = WAIT_AFTER_SEC_FLOAT
click(x=inXInt, y=inYInt, clicks=inClickCountInt, interval=inIntervalSecFloat, button=inButtonStr, duration=inMoveDurationSecFloat)
time.sleep(inWaitAfterSecFloat)
@ -52,6 +53,7 @@ def ClickDouble(inXInt:int=None, inYInt:int=None, inWaitAfterSecFloat:float=WAIT
:param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию установлено в настройках модуля Mouse (базовое значение 0.4)
:type inWaitAfterSecFloat: float, опциональный
"""
if inWaitAfterSecFloat == None: inWaitAfterSecFloat = WAIT_AFTER_SEC_FLOAT
doubleClick(x=inXInt, y=inYInt)
time.sleep(inWaitAfterSecFloat)
@ -75,6 +77,7 @@ def Down(inXInt:int=None, inYInt:int=None, inButtonStr:str='left', inWaitAfterSe
:param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию установлено в настройках модуля Mouse (базовое значение 0.4)
:type inWaitAfterSecFloat: float, опциональный
"""
if inWaitAfterSecFloat == None: inWaitAfterSecFloat = WAIT_AFTER_SEC_FLOAT
mouseDown(x=inXInt, y=inYInt, button = inButtonStr)
time.sleep(inWaitAfterSecFloat)
@ -98,6 +101,7 @@ def Up(inXInt:int=None, inYInt:int=None, inButtonStr:str='left', inWaitAfterSecF
:param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию установлено в настройках модуля Mouse (базовое значение 0.4)
:type inWaitAfterSecFloat: float, опциональный
"""
if inWaitAfterSecFloat == None: inWaitAfterSecFloat = WAIT_AFTER_SEC_FLOAT
mouseUp(x=inXInt, y=inYInt, button = inButtonStr)
time.sleep(inWaitAfterSecFloat)
@ -121,6 +125,7 @@ def MoveTo(inXInt=None, inYInt=None, inMoveDurationSecFloat:float=0.0, inWaitAft
:param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию установлено в настройках модуля Mouse (базовое значение 0.4)
:type inWaitAfterSecFloat: float, опциональный
"""
if inWaitAfterSecFloat == None: inWaitAfterSecFloat = WAIT_AFTER_SEC_FLOAT
moveTo(x=inXInt, y=inYInt, duration=inMoveDurationSecFloat)
time.sleep(inWaitAfterSecFloat)
@ -145,6 +150,7 @@ def ScrollVertical(inScrollClickCountInt, inXInt=None, inYInt=None, inWaitAfterS
:param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию установлено в настройках модуля Mouse (базовое значение 0.4)
:type inWaitAfterSecFloat: float, опциональный
"""
if inWaitAfterSecFloat == None: inWaitAfterSecFloat = WAIT_AFTER_SEC_FLOAT
vscroll(inScrollClickCountInt, x=inXInt, y=inYInt)
time.sleep(inWaitAfterSecFloat)
@ -169,5 +175,6 @@ def ScrollHorizontal(inScrollClickCountInt, inXInt=None, inYInt=None, inWaitAfte
:param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию установлено в настройках модуля Mouse (базовое значение 0.4)
:type inWaitAfterSecFloat: float, опциональный
"""
if inWaitAfterSecFloat == None: inWaitAfterSecFloat = WAIT_AFTER_SEC_FLOAT
hscroll(inScrollClickCountInt, x=inXInt, y=inYInt)
time.sleep(inWaitAfterSecFloat)

@ -2,6 +2,7 @@ from pyautogui import *
import pyscreeze
import ctypes
from pyOpenRPA.Tools import CrossOS
from . import Mouse
if CrossOS.IS_WINDOWS_BOOL:
from pywinauto import win32defines, win32structures, win32functions
@ -308,4 +309,174 @@ def BoxOverlay(inBox1, inBox2) -> bool:
:return: True - inBox1 наложен на inBox2
:rtype: bool
"""
return not ((inBox1.left>inBox2.left + inBox2.width or inBox2.left>inBox1.left + inBox1.width) or (inBox1.top>inBox2.top + inBox2.height or inBox2.top>inBox1.top + inBox1.height))
return not ((inBox1.left>inBox2.left + inBox2.width or inBox2.left>inBox1.left + inBox1.width) or (inBox1.top>inBox2.top + inBox2.height or inBox2.top>inBox1.top + inBox1.height))
def BoxGetPoint(inBox, inPointRuleStr="CC") -> pyscreeze.Point:
"""Получить точку pyscreeze.Point по заданной прямоугольной области pyscreeze.Box и строковому параметру расположения inPointRuleStr.
.. code-block:: python
# Screen: Взаимодействие с мышью объектами экрана
from pyOpenRPA.Robot import Screen
lBox1 = Screen.BoxCreate(inTopInt=10, inLeftInt=10, inHeightInt=100, inWidthInt=1000)
lPoint = Screen.BoxGetPoint(inBox=lBox1, inPointRuleStr="LC")
:param inBox: Прямоугольная область на экране
:type inBox: pyscreeze.Box, обязательный
:param inPointRuleStr: Правило идентификации точки на прямоугольной области (правила формирования см. выше). Варианты: "LU","CU","RU","LC","CC","RC","LD","CD","RD". По умолчанию "CC"
:type inPointRuleStr: str, опциональный
:return: Точка на экране
:rtype: pyscreeze.Point
"""
inPointRuleStr = inPointRuleStr.upper()
if "CC" in inPointRuleStr: return pyscreeze.Point(x=inBox.left + inBox.width/2,y=inBox.top + inBox.height/2)
elif "LU" in inPointRuleStr: return pyscreeze.Point(x=inBox.left,y=inBox.top)
elif "RU" in inPointRuleStr: return pyscreeze.Point(x=inBox.left + inBox.width,y=inBox.top)
elif "CU" in inPointRuleStr: return pyscreeze.Point(x=inBox.left + inBox.width/2,y=inBox.top)
elif "LC" in inPointRuleStr: return pyscreeze.Point(x=inBox.left,y=inBox.top + inBox.height/2)
elif "RC" in inPointRuleStr: return pyscreeze.Point(x=inBox.left + inBox.width,y=inBox.top + inBox.height/2)
elif "LD" in inPointRuleStr: return pyscreeze.Point(x=inBox.left,y=inBox.top + inBox.height)
elif "CD" in inPointRuleStr: return pyscreeze.Point(x=inBox.left + inBox.width/2,y=inBox.top + inBox.height)
elif "RD" in inPointRuleStr: return pyscreeze.Point(x=inBox.left + inBox.width,y=inBox.top + inBox.height)
def PointModify(inPoint, inDXInt, inDYInt) -> pyscreeze.Point:
"""Скорректировать точку pyscreeze.Point.
.. code-block:: python
# Screen: Взаимодействие с мышью объектами экрана
from pyOpenRPA.Robot import Screen
lPoint = Screen.PointCreate(inXInt=10, inYInt=10)
lPoint = Screen.PointModify(inPoint=lPoint, inDXInt=90, inDYInt=10)
:param inPoint: Точка на экране, по которой выполнить нажатие мыши
:type inPoint: pyscreeze.Point, обязательный
:param inDXInt: Смещение указателя мыши по оси X (горизонтальная ось).
:type inDXInt: int, опциональный
:param inDYInt: Смещение указателя мыши по оси Y (вертикальная ось).
:type inDYInt: int, опциональный
:return: Точка на экране
:rtype: pyscreeze.Point
"""
return PointCreate(inXInt=inPoint.x+inDXInt, inYInt=inPoint.y+inDYInt)
def PointCreate(inXInt, inYInt):
"""Создать точку pyscreeze.Point.
.. code-block:: python
# Screen: Взаимодействие с мышью объектами экрана
from pyOpenRPA.Robot import Screen
lPoint = Screen.PointCreate(inXInt=10, inYInt=10)
:param inXInt: Смещение указателя мыши по оси X (горизонтальная ось).
:type inXInt: int, опциональный
:param inYInt: Смещение указателя мыши по оси Y (вертикальная ось).
:type inYInt: int, опциональный
:return: Точка на экране
:rtype: pyscreeze.Point
"""
return pyscreeze.Point(x=inXInt,y=inYInt)
def PointClick(inPoint:pyscreeze.Point, inClickCountInt:int=1, inIntervalSecFloat:float=0.0, inButtonStr:str='left', inMoveDurationSecFloat:float=0.0, inWaitAfterSecFloat:float=None):
"""Нажатие (вниз) кнопки мыши и затем немедленно выпуск (вверх) её. Допускается следующая параметризация.
.. code-block:: python
# Screen: Взаимодействие с мышью объектами экрана
from pyOpenRPA.Robot import Screen
lPoint = Screen.PointCreate(100,150)
Screen.PointClick(lPoint) #Выполнить нажатие левой клавиши мыши
:param inPoint: Точка на экране, по которой выполнить нажатие мыши
:type inPoint: pyscreeze.Point, обязательный
:param inClickCountInt: Количество нажатий (вниз и вверх) кнопкой мыши, По умолчанию 1
:type inClickCountInt: int, опциональный
:param inIntervalSecFloat: Интервал ожидания в секундах между нажатиями, По умолчанию 0.0
:type inIntervalSecFloat: float, опциональный
:param inButtonStr: Номер кнопки, которую требуется нажать. Возможные варианты: 'left', 'middle', 'right' или 1, 2, 3. В остальных случаях инициирует исключение ValueError. По умолчанию 'left'
:type inButtonStr: str, опциональный
:param inMoveDurationSecFloat: Время перемещения указателя мыши, По умолчанию 0.0 (моментальное перемещение)
:type inMoveDurationSecFloat: float, опциональный
:param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию установлено в настройках модуля Mouse (базовое значение 0.4)
:type inWaitAfterSecFloat: float, опциональный
"""
Mouse.Click(inXInt=inPoint.x, inYInt=inPoint.y, inClickCountInt=inClickCountInt, inIntervalSecFloat=inIntervalSecFloat, inButtonStr=inButtonStr, inMoveDurationSecFloat=inMoveDurationSecFloat, inWaitAfterSecFloat=inWaitAfterSecFloat)
def PointClickDouble(inPoint:pyscreeze.Point, inWaitAfterSecFloat:float=None):
"""Двойное нажатие левой клавиши мыши. Данное действие аналогично вызову функции (см. ниже).
.. code-block:: python
# Screen: Взаимодействие с мышью объектами экрана
from pyOpenRPA.Robot import Screen
lPoint = Screen.PointCreate(100,150)
Screen.PointClickDouble(lPoint) #Выполнить двойное нажатие левой клавиши мыши
:param inPoint: Точка на экране, по которой выполнить нажатие мыши
:type inPoint: pyscreeze.Point, обязательный
:param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию установлено в настройках модуля Mouse (базовое значение 0.4)
:type inWaitAfterSecFloat: float, опциональный
"""
Mouse.ClickDouble(inXInt=inPoint.x, inYInt=inPoint.y, inWaitAfterSecFloat=inWaitAfterSecFloat)
def PointDown(inPoint:pyscreeze.Point, inButtonStr:str='left', inWaitAfterSecFloat:float=None):
"""Переместить указатель по координатам inPoint, после чего нажать (вниз) клавишу мыши и не отпускать до выполнения соответсвующей команды (см. Up).
.. code-block:: python
# Screen: Взаимодействие с мышью объектами экрана
from pyOpenRPA.Robot import Screen
lPoint = Screen.PointCreate(100,150)
Screen.PointDown(lPoint)
:param inPoint: Точка на экране, по которой выполнить нажатие мыши
:type inPoint: pyscreeze.Point, обязательный
:param inButtonStr: Номер кнопки, которую требуется нажать. Возможные варианты: 'left', 'middle', 'right' или 1, 2, 3. В остальных случаях инициирует исключение ValueError. По умолчанию 'left'
:type inButtonStr: str, опциональный
:param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию установлено в настройках модуля Mouse (базовое значение 0.4)
:type inWaitAfterSecFloat: float, опциональный
"""
Mouse.Down(inXInt=inPoint.x, inYInt=inPoint.y,inButtonStr=inButtonStr, inWaitAfterSecFloat=inWaitAfterSecFloat)
def PointUp(inPoint:pyscreeze.Point, inButtonStr:str='left', inWaitAfterSecFloat:float=None):
"""Отпустить (вверх) клавишу мыши.
.. code-block:: python
# Screen: Взаимодействие с мышью объектами экрана
from pyOpenRPA.Robot import Screen
lPoint = Screen.PointCreate(100,150)
Screen.PointUp(lPoint)
:param inPoint: Точка на экране, по которой выполнить нажатие мыши
:type inPoint: pyscreeze.Point, обязательный
:param inButtonStr: Номер кнопки, которую требуется поднять. Возможные варианты: 'left', 'middle', 'right' или 1, 2, 3. В остальных случаях инициирует исключение ValueError. По умолчанию 'left'
:type inButtonStr: str, опциональный
:param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию установлено в настройках модуля Mouse (базовое значение 0.4)
:type inWaitAfterSecFloat: float, опциональный
"""
Mouse.Down(inXInt=inPoint.x, inYInt=inPoint.y,inButtonStr=inButtonStr, inWaitAfterSecFloat=inWaitAfterSecFloat)
def PointMoveTo(inPoint:pyscreeze.Point, inMoveDurationSecFloat:float=0.0, inWaitAfterSecFloat:float=None):
"""Переместить указатель мыши на позицию inXInt, inYInt за время inMoveDurationSecFloat.
!ВНИМАНИЕ! Отсчет координат inXInt, inYInt начинается с левого верхнего края рабочей области (экрана).
.. code-block:: python
# Screen: Взаимодействие с мышью объектами экрана
from pyOpenRPA.Robot import Screen
lPoint = Screen.PointCreate(100,150)
Mouse.PointMoveTo(inXInt=100, inYInt=200)
:param inPoint: Точка на экране, по которой выполнить нажатие мыши
:type inPoint: pyscreeze.Point, обязательный
:param inMoveDurationSecFloat: Время перемещения указателя мыши, По умолчанию 0.0 (моментальное перемещение)
:type inMoveDurationSecFloat: float, опциональный
:param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию установлено в настройках модуля Mouse (базовое значение 0.4)
:type inWaitAfterSecFloat: float, опциональный
"""
Mouse.Down(inXInt=inPoint.x, inYInt=inPoint.y, inMoveDurationSecFloat=inMoveDurationSecFloat, inWaitAfterSecFloat=inWaitAfterSecFloat)

@ -154,6 +154,37 @@
"print(l)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"def test(): print(1)\n",
"def test(t): print(2)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"ename": "TypeError",
"evalue": "test() missing 1 required positional argument: 't'",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-23-fbd55f77ab7c>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mtest\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;31mTypeError\u001b[0m: test() missing 1 required positional argument: 't'"
]
}
],
"source": [
"test()"
]
},
{
"cell_type": "code",
"execution_count": null,

Loading…
Cancel
Save