不知道步长是什么意思,不管怎么设置步长都可以拖到一个随意值而不是步长的整数倍
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QSlider, QHBoxLayout, QApplication, QFrame, QWidget
class Slider(QWidget):
def __init__(self):
QWidget.__init__(self)
self.setUI()
def setUI(self):
self.slh = QSlider(Qt.Horizontal) #水平slider
self.slh.setMinimum(0) #设置最小值
self.slh.setMaximum(100) #设置最大值
self.slh.setSingleStep(1) #设置步长
self.slh.setValue(0) #设置当前初始值
self.slh.setTickPosition(QSlider.TicksAbove) #设置刻度在上方
self.slh.setTickInterval(10) #设置每个刻度的间隔
self.slh.valueChanged.connect(self.printslhValue) #连接打印值的槽函数
self.slv = QSlider(Qt.Vertical) #垂直slider
self.slv.setMinimum(0) #设置最小值
self.slv.setMaximum(1000) #设置最大值
self.slv.setSingleStep(10) #设置步长,每次移动的最小值
self.slv.setValue(0) #设置当前初始值
self.slv.setTickPosition(QSlider.TicksRight) #设置刻度在右边
self.slv.setTickInterval(100) #设置每个刻度的间隔
self.slv.valueChanged.connect(self.printslvValue) #连接打印值的槽函数
self.layoutLeft = QHBoxLayout()
self.layoutLeft.addWidget(self.slv)
self.layoutRight = QHBoxLayout()
self.layoutRight.addWidget(self.slh)
self.widGetLeft = QFrame()
self.widGetLeft.setLayout(self.layoutLeft)
self.widGetRight = QFrame()
self.widGetRight.setLayout(self.layoutRight)
self.hbox = QHBoxLayout()
self.hbox.addWidget(self.widGetLeft)
self.hbox.addWidget(self.widGetRight)
self.setLayout(self.hbox)
def printslhValue(self):
print(self.slh.value())
def printslvValue(self):
print(self.slv.value())
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
ex = Slider()
ex.show()
sys.exit(app.exec_())