2016-04-29 4 views
0

Ich muss Fensterrahmen ziehen, die das Hauptfenster in zwei Teile teilt. Ich versuchte dies:wie Fensterelemente ziehen

import win32api 
import win32con 
win32api.SetCursorPos((700,1200)) 
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,700,1200,0,0) 
win32api.SetCursorPos((700,960)) 
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,700,960,0,0) 

und ich habe auch versucht, dies:

import pywinauto 
pywinauto.controls.HwndWrapper.DragMouse(button='left', pressed='', press_coords=(700,1200), release_coords=(700,960)) 

Das erste Beispiel funktioniert nicht. Es tut einfach nichts. Der zweite gibt einen Fehler:

AttributeError: 'module' object has no attribute 'DragMouse' 

Habe ich importiert es falsch? Kann jemand Beispiele für das Ziehen von Objekten mit der Maus geben?

Leonid

+0

Könnten Sie weiter erklären, was Sie tun müssen? Denn von dem, was ich verstehe, sollte dein erstes Beispiel funktionieren. was ist * Cursor auf Position setzen * -> * linke Maustaste gedrückt * ---> * neue Position setzen * ---> * linke Maustaste hoch * – harristyle

+0

@harristyle: Drag-Operationen werden normalerweise so implementiert, dass sie auf die Maus reagieren ** Bewegen ** Nachrichten. Die naive Umsetzung kann somit nicht zum Funktionieren gebracht werden. Auf jeden Fall ist der richtige Weg dies normalerweise [UI Automation] (https://msdn.microsoft.com/en-us/library/windows/desktop/ee684009.aspx). – IInspectable

+0

Sie verwenden 'DragMouse' von' pywinauto' falsch. Werfen Sie einen Blick auf [das korrekte Beispiel] (https://gist.github.com/vasily-v-ryabov/f6c6f4d94fe313be8236). –

Antwort

-1

Meine Entschuldigung. Das erste Beispiel funktioniert. Ich muss die Anfangskoordinaten der Leiste in der Mitte des Fensters verpasst haben. Speziell Ich wollte das gesamte Anwendungsfenster neu positionieren, bevor Sie beginnen, seine Elemente zu verwenden. Es ist einfach, das Fenster selbst neu zu positionieren, aber es hat auch einen mittleren Balken, der hoch und runter gezogen werden kann. Dieser Balken muss vor Beginn der Verarbeitung in einer bestimmten Position stehen. Problem gelöst. ;-) Leonid