PyQt,有没有办法对多个滑块使用一个 changeValue 方法?
PyQt, Any way to use one changeValue method for multiple sliders?
我需要 3 个滑块(或更多)。所以目前,我为每个滑块设置了三种不同的 changeValues 方法。
在 initUI(self) 中,我有三个滑块:
sigmaTitle = QtGui.QLabel('Sigma')
sigmaSlider = QtGui.QSlider(QtCore.Qt.Horizontal, self)
sigmaSlider.setRange(0, 100)
sigmaSlider.valueChanged[int].connect(self.sigmaChangeValue)
dtTitle = QtGui.QLabel('Sigma')
dtSlider = QtGui.QSlider(QtCore.Qt.Horizontal, self)
dtSlider.setRange(200, 400)
dtSlider.valueChanged[int].connect(self.dtChangeValue)
rTitle = QtGui.QLabel('Sigma')
rSlider = QtGui.QSlider(QtCore.Qt.Horizontal, self)
rSlider.setRange(300, 400)
rSlider.valueChanged[int].connect(self.rChangeValue)
然后我有三个 changeValue 方法:
def sigmaChangeValue(self, value):
self.sigma = value / 1000.0
print self.sigma
def dtChangeValue(self, value):
self.dt = value / 1000.0
print self.dt
def rChangeValue(self, value):
self.r = value / 1000.0
print self.r
那么有没有办法使用一个共享的 changeValue 方法并且仍然允许单独分配不同范围的变量?
谢谢
是的,您可以将所有滑块 valueChanged
信号连接到同一个插槽。
如果你需要知道哪个滑块发送了信号,你可以使用插槽内部的 QObject.sender()
方法。
参见 QObject.sender()
示例:
#create the sliders using self:
self.sigmaSlider = QtGui.QSlider(QtCore.Qt.Horizontal, self)
self.sigmaSlider.setRange(0, 100)
#etc...
插槽:
def mySlot(self, value):
if self.sender() == self.sigmaSlider:
self.sigma = value / 1000.0
print self.sigma
elif self.sender() == self.dtSlider:
#etc....
我需要 3 个滑块(或更多)。所以目前,我为每个滑块设置了三种不同的 changeValues 方法。
在 initUI(self) 中,我有三个滑块:
sigmaTitle = QtGui.QLabel('Sigma')
sigmaSlider = QtGui.QSlider(QtCore.Qt.Horizontal, self)
sigmaSlider.setRange(0, 100)
sigmaSlider.valueChanged[int].connect(self.sigmaChangeValue)
dtTitle = QtGui.QLabel('Sigma')
dtSlider = QtGui.QSlider(QtCore.Qt.Horizontal, self)
dtSlider.setRange(200, 400)
dtSlider.valueChanged[int].connect(self.dtChangeValue)
rTitle = QtGui.QLabel('Sigma')
rSlider = QtGui.QSlider(QtCore.Qt.Horizontal, self)
rSlider.setRange(300, 400)
rSlider.valueChanged[int].connect(self.rChangeValue)
然后我有三个 changeValue 方法:
def sigmaChangeValue(self, value):
self.sigma = value / 1000.0
print self.sigma
def dtChangeValue(self, value):
self.dt = value / 1000.0
print self.dt
def rChangeValue(self, value):
self.r = value / 1000.0
print self.r
那么有没有办法使用一个共享的 changeValue 方法并且仍然允许单独分配不同范围的变量?
谢谢
是的,您可以将所有滑块 valueChanged
信号连接到同一个插槽。
如果你需要知道哪个滑块发送了信号,你可以使用插槽内部的 QObject.sender()
方法。
参见 QObject.sender()
示例:
#create the sliders using self:
self.sigmaSlider = QtGui.QSlider(QtCore.Qt.Horizontal, self)
self.sigmaSlider.setRange(0, 100)
#etc...
插槽:
def mySlot(self, value):
if self.sender() == self.sigmaSlider:
self.sigma = value / 1000.0
print self.sigma
elif self.sender() == self.dtSlider:
#etc....