|
1 | 1 | import functools |
| 2 | +import time |
2 | 3 | from collections.abc import Callable |
3 | 4 | from typing import Any |
4 | 5 |
|
@@ -271,8 +272,8 @@ def __init__(self, relay: "Relay"): |
271 | 272 | super().__init__() |
272 | 273 | self._relay = relay |
273 | 274 | self._fast = False |
274 | | - self._step_slow = 5.0 |
275 | | - self._step_fast = 50.0 |
| 275 | + self._step_slow = 10_000.0 |
| 276 | + self._step_fast = 200_000.0 |
276 | 277 |
|
277 | 278 | layout = QVBoxLayout(self) |
278 | 279 |
|
@@ -308,28 +309,36 @@ def __init__(self, relay: "Relay"): |
308 | 309 | right_btn.clicked.connect(lambda: self._step(self._step_size, 0)) |
309 | 310 | self._speed_btn.toggled.connect(self._toggle_speed) |
310 | 311 |
|
311 | | - self._timer = QTimer() |
312 | | - self._timer.timeout.connect(self._update_pos) |
313 | | - self._timer.start(100) |
314 | | - |
315 | 312 | self.setFocusPolicy(Qt.StrongFocus) |
316 | 313 |
|
| 314 | + xy = self._relay.get("xy") |
| 315 | + self._xy = list(xy) |
| 316 | + self._last_sync = time.monotonic() |
| 317 | + self._update_labels() |
| 318 | + |
317 | 319 | @property |
318 | 320 | def _step_size(self) -> float: |
319 | 321 | return self._step_fast if self._fast else self._step_slow |
320 | 322 |
|
321 | 323 | def _step(self, dx: float, dy: float): |
| 324 | + now = time.monotonic() |
| 325 | + if now - self._last_sync >= 2.0: |
| 326 | + xy = self._relay.get("xy") |
| 327 | + self._xy = list(xy) |
| 328 | + self._last_sync = now |
| 329 | + self._xy[0] += dx |
| 330 | + self._xy[1] += dy |
322 | 331 | self._relay.post("step_xy", dx, dy) |
| 332 | + self._update_labels() |
| 333 | + |
| 334 | + def _update_labels(self): |
| 335 | + self._x_label.setText(f"x: {self._xy[0]:.0f}") |
| 336 | + self._y_label.setText(f"y: {self._xy[1]:.0f}") |
323 | 337 |
|
324 | 338 | def _toggle_speed(self, checked: bool): |
325 | 339 | self._fast = checked |
326 | 340 | self._speed_btn.setText("Fast" if checked else "Slow") |
327 | 341 |
|
328 | | - def _update_pos(self): |
329 | | - xy = self._relay.get("xy") |
330 | | - self._x_label.setText(f"x: {xy[0]:.1f}") |
331 | | - self._y_label.setText(f"y: {xy[1]:.1f}") |
332 | | - |
333 | 342 | def keyPressEvent(self, event): |
334 | 343 | key = event.key() |
335 | 344 | if key == Qt.Key_Up: |
|
0 commit comments