mirror of
https://github.com/fatiando/moulder.git
synced 2025-12-21 10:31:09 +08:00
Added QDoubleSlider
This commit is contained in:
33
double_slider.py
Normal file
33
double_slider.py
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
from __future__ import division
|
||||||
|
from future.builtins import super
|
||||||
|
|
||||||
|
from PyQt5.QtWidgets import QSlider
|
||||||
|
|
||||||
|
|
||||||
|
class QDoubleSlider(QSlider):
|
||||||
|
|
||||||
|
def __init__(self, parent, min_value, max_value, step, init_value=None):
|
||||||
|
super().__init__(parent)
|
||||||
|
self.min_value = min_value
|
||||||
|
self.max_value = max_value
|
||||||
|
self.step = step
|
||||||
|
self.init_value = init_value
|
||||||
|
self.nvalues = int((max_value - min_value)/step)
|
||||||
|
|
||||||
|
true_max_value = min_value + step*self.nvalues
|
||||||
|
if true_max_value != max_value:
|
||||||
|
self.max_value = true_max_value
|
||||||
|
|
||||||
|
self.setMinimum(self.float_2_int(min_value))
|
||||||
|
self.setMaximum(self.float_2_int(max_value))
|
||||||
|
if init_value is not None:
|
||||||
|
self.setValue(self.float_2_int(init_value))
|
||||||
|
|
||||||
|
def int_2_float(self, value):
|
||||||
|
return (self.max_value - self.min_value)*value/self.nvalues + \
|
||||||
|
self.min_value
|
||||||
|
|
||||||
|
def float_2_int(self, value):
|
||||||
|
return int(
|
||||||
|
self.nvalues*(value - self.min_value) /
|
||||||
|
(self.max_value - self.min_value))
|
||||||
12
moulder.py
12
moulder.py
@@ -15,6 +15,7 @@ from PyQt5.QtWidgets import QSlider, QHBoxLayout, QLabel, QDialog
|
|||||||
from PyQt5.QtWidgets import QDialogButtonBox, QDoubleSpinBox
|
from PyQt5.QtWidgets import QDialogButtonBox, QDoubleSpinBox
|
||||||
|
|
||||||
from figure_canvas import GravityModelCanvas
|
from figure_canvas import GravityModelCanvas
|
||||||
|
from double_slider import QDoubleSlider
|
||||||
from interactive import Moulder
|
from interactive import Moulder
|
||||||
from configure_dialog import ConfigureMeassurementDialog
|
from configure_dialog import ConfigureMeassurementDialog
|
||||||
|
|
||||||
@@ -118,11 +119,9 @@ class MoulderApp(QMainWindow):
|
|||||||
self.density_spinbox.setValue(0)
|
self.density_spinbox.setValue(0)
|
||||||
self.density_spinbox.setSingleStep(1)
|
self.density_spinbox.setSingleStep(1)
|
||||||
|
|
||||||
self.error_slider = QSlider(Qt.Horizontal)
|
self.error_slider = QDoubleSlider(Qt.Horizontal, 0, 5, 0.5,
|
||||||
self.error_slider.setMinimum(0)
|
init_value=0)
|
||||||
self.error_slider.setMaximum(5)
|
self.error_slider.setTickInterval(self.error_slider.float_2_int(0.5))
|
||||||
self.error_slider.setValue(0)
|
|
||||||
self.error_slider.setTickInterval(0.5)
|
|
||||||
self.error_slider.setTickPosition(QSlider.TicksBelow)
|
self.error_slider.setTickPosition(QSlider.TicksBelow)
|
||||||
self.error_spinbox = QDoubleSpinBox()
|
self.error_spinbox = QDoubleSpinBox()
|
||||||
self.error_spinbox.setMinimum(0)
|
self.error_spinbox.setMinimum(0)
|
||||||
@@ -160,10 +159,11 @@ class MoulderApp(QMainWindow):
|
|||||||
self.density_slider.setValue(value)
|
self.density_slider.setValue(value)
|
||||||
self.moulder.set_density(value)
|
self.moulder.set_density(value)
|
||||||
elif sender == self.error_slider:
|
elif sender == self.error_slider:
|
||||||
|
value = self.error_slider.int_2_float(value)
|
||||||
self.error_spinbox.setValue(value)
|
self.error_spinbox.setValue(value)
|
||||||
self.moulder.set_error(value)
|
self.moulder.set_error(value)
|
||||||
elif sender == self.error_spinbox:
|
elif sender == self.error_spinbox:
|
||||||
self.error_slider.setValue(value)
|
self.error_slider.setValue(self.error_slider.float_2_int(value))
|
||||||
self.moulder.set_error(value)
|
self.moulder.set_error(value)
|
||||||
|
|
||||||
def _quit_callback(self):
|
def _quit_callback(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user