win32gui MoveWindow() 未与屏幕左边缘对齐
win32gui MoveWindow() not aligned with left edge of screen
我正在使用win32gui
将记事本window移动到屏幕原点(0, 0),宽度和高度等于500。结果是window 没有移动到真正的左边框,而是 ~10 px。向右。宽度和高度也不等于 500 像素。 (改为 ~620 像素)。
我正在使用以下代码生成我的结果。
import win32gui
from PIL import ImageGrab
# Open notepad.exe manually.
hwnd = win32gui.FindWindow(None, "Untitled - Notepad")
win32gui.MoveWindow(hwnd, 0, 0, 500, 500, True)
bbox = win32gui.GetWindowRect(hwnd)
img = ImageGrab.grab(bbox)
这里是 window 在屏幕上的整体位置截图:
这里是 img
的照片:
Windows 10 有一个 7 像素的不可见边框。 (如果包括可见的 1 个像素 window 边框,则总计为 8 个像素。)它是用于调整 windows 大小的边框,位于 window 的左侧、右侧和底部边缘。
注意调整大小的光标如何与上边缘反应。那里没有隐形边框。
一个简单的解决方法是只偏移 MoveWindow
中的 x
。
win32gui.MoveWindow(hwnd, -7, 0, 500, 500, True)
或者创建一个新函数来做到这一点:
def move_window(hwnd, x, y, n_width, n_height, b_repaint):
win32gui.MoveWindow(hwnd, x - 7, y, n_width, n_height, b_repaint)
我正在使用win32gui
将记事本window移动到屏幕原点(0, 0),宽度和高度等于500。结果是window 没有移动到真正的左边框,而是 ~10 px。向右。宽度和高度也不等于 500 像素。 (改为 ~620 像素)。
我正在使用以下代码生成我的结果。
import win32gui
from PIL import ImageGrab
# Open notepad.exe manually.
hwnd = win32gui.FindWindow(None, "Untitled - Notepad")
win32gui.MoveWindow(hwnd, 0, 0, 500, 500, True)
bbox = win32gui.GetWindowRect(hwnd)
img = ImageGrab.grab(bbox)
这里是 window 在屏幕上的整体位置截图:
这里是 img
的照片:
Windows 10 有一个 7 像素的不可见边框。 (如果包括可见的 1 个像素 window 边框,则总计为 8 个像素。)它是用于调整 windows 大小的边框,位于 window 的左侧、右侧和底部边缘。
注意调整大小的光标如何与上边缘反应。那里没有隐形边框。
一个简单的解决方法是只偏移 MoveWindow
中的 x
。
win32gui.MoveWindow(hwnd, -7, 0, 500, 500, True)
或者创建一个新函数来做到这一点:
def move_window(hwnd, x, y, n_width, n_height, b_repaint):
win32gui.MoveWindow(hwnd, x - 7, y, n_width, n_height, b_repaint)