Улучшить две шкалы, навигацию и формулы графиков

This commit is contained in:
2026-10-04 23:34:26 +03:00
parent c7294830f9
commit 6c08eece61
5 changed files with 162 additions and 36 deletions
+10 -2
View File
@@ -11,7 +11,8 @@ except ImportError:
from PySide2.QtWidgets import QScrollArea
NAVIGATION_HINT = ('Колесо и +/− — масштаб X; Ctrl + колесо и Ctrl + +/− — масштаб Y. '
'ЛКМ на свободном поле — перемещение; ←/→ — перемещение по X; Home/End — начало/конец.')
'ЛКМ — перемещение по X; Ctrl + ЛКМ — по Y; '
'←/→ — перемещение по X; ↑/↓ — по Y; Home/End — начало/конец.')
class PlotNavigation:
@@ -29,6 +30,8 @@ class PlotNavigation:
bool(modifiers & Qt.ControlModifier))
elif key in (Qt.Key_Left, Qt.Key_Right) and not (modifiers & Qt.ControlModifier):
self._navigation_pan(-.1 if key == Qt.Key_Left else .1)
elif key in (Qt.Key_Up, Qt.Key_Down):
self._navigation_pan_y(-.1 if key == Qt.Key_Up else .1)
elif key in (Qt.Key_Home, Qt.Key_End):
self._navigation_edge(key == Qt.Key_End)
else:
@@ -80,6 +83,12 @@ class ScrollPlotNavigation(PlotNavigation):
bar.setValue(round(bar.value() + fraction * bar.pageStep()))
self.navigation_panned()
def _navigation_pan_y(self, fraction):
scroll = self.scroll_area()
if scroll is not None:
bar = scroll.verticalScrollBar()
bar.setValue(round(bar.value() + fraction * bar.pageStep()))
def _navigation_edge(self, end):
scroll = self.scroll_area()
if scroll is not None:
@@ -113,4 +122,3 @@ class ScrollPlotNavigation(PlotNavigation):
self.move_pan(event)
self._pan_position = None
self.unsetCursor()