Mausfunktionen (Mouse)
Klasse Mouse
Die Mouse
-Klasse wird verwendet, um Maus-Eingaben zu erfassen. Im Allgemeinen erstellst du ein
Mouse
-Objekt mit der Mouse()
-Fabrikfunktion, wie im Abschnitt Eine Mouse erstellen beschrieben.
Beispiel
# Zeichne einen 'Fixationspunkt-Mauszeiger', bis eine Schaltfläche angeklickt wird.
my_mouse = Mouse()
my_canvas = Canvas()
while True:
button, position, timestamp = my_mouse.get_click(timeout=20)
if button is not None:
break
(x,y), time = my_mouse.get_pos()
my_canvas.clear()
my_canvas.fixdot(x, y)
my_canvas.show()
Dinge, die man wissen sollte
Eine Mouse erstellen
Im Allgemeinen erstellst du eine Mouse
mit der Mouse()
-Fabrikfunktion:
my_mouse = Mouse()
Optional kannst du Antwort-Schlüsselwörter an Mouse()
übergeben, um das Standardverhalten festzulegen:
my_mouse = Mouse(timeout=2000)
Koordinaten
- Wenn Uniforme Koordinaten auf 'ja' gesetzt sind, sind die Koordinaten relativ zum Zentrum der Anzeige. Das heißt, (0,0) ist die Mitte. Dies ist die Standardeinstellung ab OpenSesame 3.0.0.
- Wenn Uniforme Koordinaten auf 'nein' gesetzt sind, sind die Koordinaten relativ zu der oberen linken Ecke der Anzeige. Das heißt, (0,0) ist die obere linke Ecke. Dies war die Standardeinstellung in OpenSesame 2.9.X und früher.
Tastennummern
Maus-Tasten sind wie folgt nummeriert:
- Linke Taste
- Mittlere Taste
- Rechte Taste
- Scroll hoch
- Scroll runter
Touchscreens
Bei der Arbeit mit einem Touchscreen wird eine Berührung als Taste 1 (linke Taste) registriert.
Antwort-Schlüsselwörter
Funktionen, die **resp_args
annehmen, nehmen die folgenden Schlüsselwortargumente an:
timeout
gibt einen Timeout-Wert in Millisekunden an oder wird aufNone
gesetzt, um den Timeout zu deaktivieren.buttonlist
gibt eine Liste der akzeptierten Tasten an oder wird aufNone
gesetzt, um alle Tasten zu akzeptieren.visible
zeigt an, ob der Mauszeiger sichtbar wird, wenn ein Klick erfasst wird (True
oderFalse
). Um die Cursor-Sichtbarkeit sofort zu ändern, verwenden SieMouse.show_cursor()
.
# Hole einen linken oder rechten Tastendruck mit einer Zeitüberschreitung von 3000 ms
my_mouse = Mouse()
button, time = my_mouse.get_click(buttonlist=[1,3], timeout=3000)
Antwort-Schlüsselwörter beeinflussen nur den aktuellen Vorgang (außer wenn sie an Mouse()
übergeben werden, wenn das Objekt erstellt wird). Um das Verhalten für alle anschließenden Vorgänge zu ändern, setze die Antwort-Eigenschaften direkt::
# Hole zwei linke oder rechte Tastendrücke mit einer Zeitüberschreitung von 5000 ms
my_mouse = Mouse()
my_mouse.buttonlist = [1,3]
my_mouse.timeout = 5000
button1, time1 = my_mouse.get_click()
button2, time2 = my_mouse.get_click()
Oder übergebe die Antwort-Schlüsselwörter an Mouse()
, wenn du das Objekt erstellst:
# Hole zwei linke oder rechte Tastendrücke mit einer Zeitüberschreitung von 5000 ms
my_mouse = Mouse(buttonlist=[1,3], timeout=5000)
button1, time1 = my_mouse.get_click()
button2, time2 = my_mouse.get_click()
flush(self)
Löscht alle ausstehenden Eingaben, nicht nur die der Maus.
Returns
- True, wenn eine Schaltfläche angeklickt wurde (d.h., wenn es etwas zu löschen gab) und False in anderen Fällen.
Beispiel
my_mouse = Mouse()
my_mouse.flush()
button, position, timestamp = my_mouse.get_click()
get_click(*arglist, **kwdict)
Erfasst einen Mausklick.
Parameter
- **resp_args: Optionale Antwort-Schlüsselwörter, die für diesen Aufruf von
Mouse.get_click()
verwendet werden. Dies hat keine Auswirkungen auf nachfolgende Vorgänge.
Returns
- Ein (Taste, Position, Zeitstempel)-Tupel. Die Taste und die Position sind
None
, wenn ein Timeout auftritt. Die Position ist ein (x, y)-Tupel in Bildschirm- Koordinaten.
Beispiel
my_mouse = Mouse()
button, (x, y), timestamp = my_mouse.get_click(timeout=5000)
if button is None:
print('Ein Timeout ist aufgetreten!')
get_click_release(*arglist, **kwdict)
Neu in v3.2.0
Erfasst das Loslassen eines Mausklicks.
Wichtig: Dies Funktion ist derzeit nicht für das "psycho"-Backend implementiert.
Parameter
- **resp_args: Optionale Antwort-Schlüsselwörter, die für diesen Aufruf von
Mouse.get_click_release()
verwendet werden. Dies hat keinen Einfluss auf nachfolgende Vorgänge.
Gibt zurück
- Ein (button, position, timestamp) Tupel. Der Button und die Position sind
None
, wenn ein Timeout auftritt. Die Position ist ein (x, y) Tupel in Bildschirmkoordinaten.
Beispiel
meine_maus = Mouse()
button, (x, y), timestamp = meine_maus.get_click_release(timeout=5000)
if button is None:
print('Ein Timeout ist aufgetreten!')
get_pos(self)
Gibt die aktuelle Position des Mauszeigers zurück.
Gibt zurück
- Ein (position, timestamp) Tupel.
Beispiel
meine_maus = Mouse()
(x, y), timestamp = meine_maus.get_pos()
print('Der Mauszeiger war bei (%d, %d)' % (x, y))
get_pressed(self)
Gibt den aktuellen Zustand der Maustasten zurück. Ein True-Wert bedeutet, dass die Taste gerade gedrückt wird.
Gibt zurück
- Ein (button1, button2, button3) Tupel aus boolschen Werten.
Beispiel
meine_maus = Mouse()
buttons = meine_maus.get_pressed()
b1, b2, b3 = buttons
print('Derzeit gedrückte Maustasten: (%d,%d,%d)' % (b1,b2,b3))
set_pos(pos=(0, 0))
Legt die Position des Mauszeigers fest.
Warnung: set_pos()
ist
unzuverlässig und schlägt stillschweigend auf
einigen Systemen fehl.
Parameter
- pos: Ein (x, y) Tupel für die neuen Mauskoordinaten.
Beispiel
meine_maus = Mouse()
meine_maus.set_pos(pos=(0,0))
show_cursor(show=True)
Ändert sofort die Sichtbarkeit des Mauszeigers.
Hinweis:
In den meisten Fällen möchten Sie das Schlüsselwort visible
verwenden, welches
die Sichtbarkeit während der Erfassung von Antworten ändert,
also während
mouse.get_click()
aufgerufen wird. Das Aufrufen von
show_cursor()
ändert nicht
implizit den Wert von visible
,
was zu dem
etwas unintuitiven Verhalten führen kann, dass der Cursor
versteckt wird, sobald
get_click()
aufgerufen wird.
Parameter
- show: Gibt an, ob der Cursor angezeigt (True) oder ausgeblendet (False) ist.
synonyms(button)
Gibt eine Liste von Synonymen für eine Maustaste zurück. Zum Beispiel sind 1 und 'left_button' Synonyme.
Parameter
- button: Ein Button-Wert.
Gibt zurück
- Eine Liste von Synonymen.