Как можно узнать размер и координаты окна в Python?

Как можно определить координаты и размеры окна, которое открывается случайно на экране, не имея возможности взаимодействовать с содержимым окна, в том числе его цветом или текстурой, но зная, что у всех окон соотношение сторон 16:9? Какую библиотеку или метод можно использовать для этой задачи? Любые идеи или советы будут ценны. Спасибо.
  • 12 апреля 2024 г. 23:29
Ответы на вопрос 2
1. Для получения размеров и координат окна в Python можно использовать библиотеку PyQt5. Ниже приведен пример кода, который выводит размеры и координаты текущего окна:

```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget

app = QApplication(sys.argv)
widget = QWidget()
widget.resize(500, 300)
widget.move(50, 50)
widget.show()

print("Размер окна:", widget.frameSize())
print("Координаты окна:", widget.frameGeometry().topLeft())

sys.exit(app.exec_())
```

2. Для определения координат и размеров окна с соотношением сторон 16:9 можно воспользоваться библиотекой pyautogui, которая позволяет автоматизировать действия с экраном. Ниже пример кода, который находит окно с соотношением сторон 16:9 и выводит его координаты и размеры:

```python
import pyautogui

def find_window_16_9():
    for x in range(pyautogui.size()[0]):
        for y in range(pyautogui.size()[1]):
            if x / y == 16/9:
                print("Координаты окна:", x, y)
                print("Размер окна: 16:9")
                return x, y
    return None, None

find_window_16_9()
```

Это два способа, с помощью которых вы можете получить информацию о размерах и координатах окна в Python. Надеюсь, это поможет вам решить вашу задачу.
Ответ для винды - с линуксовыми оконными менеджерами я дела не имел. <br/> Можно посмотреть на видимый заголовок окна или на т.н. строку класса окна. Возможно, pyautogui или pywinauto могут найти окна по заголовку. <br/> Более сложные и надёжные решения требуют работы с WinAPI: в принципе можно найти окна, принадлежащие процессу с заданным экзешником, уточнить через заголовок/класс окна, а дальше получить их позицию. <br/> Проблема в том, что до WinAPI надо достукиваться через модуль ctypes, а значит, нужно уметь не только Питон, но и хотя бы основы C или C++. Я могу описать этот вариант подробнее, если захочешь связываться с этой канителью.
Похожие вопросы