asweigart/PyGetWindow

PyGetWindow returns wrong location

swadeeshs opened this issue · 1 comments

Here is my simple code to locate the Notepad++ opened on my screen. (Windows10)
import pygetwindow
window_name = 'new 1 - Notepad++'
window = pygetwindow.getWindowsWithTitle(window_name)[0]
print(window.topleft)
Output when executed>>Point(x=830, y=250)

The same code returns a different set of coordinates when I import PyAutoGUI. Here is the code and the output.
import pygetwindow
import pyautogui
window_name = 'new 1 - Notepad++'
window = pygetwindow.getWindowsWithTitle(window_name)[0]
print(window.topleft)
Output when executed>>Point(x=1038, y=312)

Hey! I was having a similar issue, but not only with PyGetWindow but also with win32gui from pywin32.

I was trying to extract a game window size, which I know for sure it's more or less width=1015 and height=678 (I used a sprite extractor).
However, PyGetWindow was returning width=821 and height=572, while win32gui was returning width=816 and height=544.

Upon seeing your issue, I installed pyautogui and imported it. Then PyGetWindow started to return width = 1026 and height = 715, while win32gui returned width=1020 and height = 680.

There might be a bug within PyGetWindow and win32gui that is fixed with the installation of pyautogui or some of its complements.

The code:

import pyautogui
import pygetwindow

teste = pygetwindow.getWindowsWithTitle('Jigoku Kisetsukan: Sense of the seasons v.1.09')[0]

print(teste.size)

import win32gui

window = win32gui.FindWindow(None, 'Jigoku Kisetsukan: Sense of the seasons v.1.09')

A screenshot of the situation, in case someone gets curious:
PS: The screenshot was taken before the fix. I took it to use it in my sprite extractor.
Teste