gpt4 book ai didi

python - 对 QSlider 使用 float

转载 作者:太空宇宙 更新时间:2023-11-04 05:11:43 25 4
gpt4 key购买 nike

我有一个 QLineEdit 和一个 QSlider,它们在其中相互交互。

例如。如果我在 QLineEdit 中设置一个值, slider 将被更新,或者如果我滑动 slider ,它将更新 QLineEdit 中的值

# If user change value on the slider
self.timer_slider.valueChanged.connect(self.set_value)
# If user sets a value in the text box instead
self.timer_value.textChanged.connect(self.set_slider)

def set_slider(self, value):
self.timer_slider.setValue(int(value))

def set_value(self, value):
self.timer_value.setText(str(value))

我是否可以使用 float 而不是 int 值?

最佳答案

@dissidia 的回答很好。但是,如果您的应用程序中有很多 slider ,或者如果您需要多个不同的比例因子,那么将 QSlider 子类化以创建您自己的 QDoubleSlider 是值得的。

下面的类基于其他人的工作,但如果链接到 QLineEdit 或 QDoubleSpinBox,则有一个额外的功能:一个名为 doubleValueChanged 的​​ valueChanged 的​​新信号。

class DoubleSlider(QSlider):

# create our our signal that we can connect to if necessary
doubleValueChanged = pyqtSignal(float)

def __init__(self, decimals=3, *args, **kargs):
super(DoubleSlider, self).__init__( *args, **kargs)
self._multi = 10 ** decimals

self.valueChanged.connect(self.emitDoubleValueChanged)

def emitDoubleValueChanged(self):
value = float(super(DoubleSlider, self).value())/self._multi
self.doubleValueChanged.emit(value)

def value(self):
return float(super(DoubleSlider, self).value()) / self._multi

def setMinimum(self, value):
return super(DoubleSlider, self).setMinimum(value * self._multi)

def setMaximum(self, value):
return super(DoubleSlider, self).setMaximum(value * self._multi)

def setSingleStep(self, value):
return super(DoubleSlider, self).setSingleStep(value * self._multi)

def singleStep(self):
return float(super(DoubleSlider, self).singleStep()) / self._multi

def setValue(self, value):
super(DoubleSlider, self).setValue(int(value * self._multi))

关于python - 对 QSlider 使用 float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42820380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com