Få vinduesposition & størrelse med python

Indlæg af Hanne Mølgaard Plasc

Problem



Hvordan kan jeg få og indstille vinduet (hvilket Windows-program) position og størrelse med python?

Bedste reference


Hvis du antager, at du er i Windows, skal du prøve at bruge pywin32 's win32gui modulet med sine funktioner EnumWindows og GetWindowRect.


Hvis du bruger Mac OS X, kan du prøve at bruge appscript.


For Linux kan du prøve en af ​​de mange grænseflader til X11.


 Eksempel på Windows (ikke testet):


import win32gui

def callback(hwnd, extra):
    rect = win32gui.GetWindowRect(hwnd)
    x = rect[0]
    y = rect[1]
    w = rect[2] - x
    h = rect[3] - y
    print "Window \%s:" \% win32gui.GetWindowText(hwnd)
    print "	Location: (\%d, \%d)" \% (x, y)
    print "	    Size: (\%d, \%d)" \% (w, h)

def main():
    win32gui.EnumWindows(callback, None)

if \_\_name\_\_ == '\_\_main\_\_':
    main()

Andre referencer 1


Du kan få vinduekoordinaterne ved hjælp af funktionen GetWindowRect. Til dette har du brug for et håndtag til vinduet, som du kan få ved at bruge FindWindow, forudsat at du ved noget om vinduet (f.eks. Dets titel). [14] [15]


For at kalde Win32 API funktioner fra Python, brug pywin32. [16]

Andre referencer 2


For Linux kan du bruge det værktøj, jeg lavede her. Værktøjet var beregnet til en lidt anden brug, men du kan bruge API'en direkte til dine behov. [17]


Installer værktøj


sudo apt-get install xdotool xprop xwininfo
git clone https://github.com/Pithikos/winlaunch.git && cd winlaunch


I terminal


>>> from winlaunch import *
>>> wid, pid = launch('firefox')
>>> win\_pos(wid)
[3210, 726]


wid og pid står for henholdsvis vindue id og proces id.