滑块QAbstractSlider
继承于 QWidget
抽象类-必须子类化
提供的范围内的整数值
QAbstractSlider
import sys from PyQt5.QtWidgets import QApplication, QWidget,QAbstractSlider,QSlider,QLabel,QPushButton from PyQt5.QtCore import Qt class Demo(QWidget): def __init__(self): super().__init__() self.resize(300,300) self.label=QLabel('0 ',self) self.label.move(80,20) #print(QAbstractSlider.__subclasses__()) #返回QAbstractSlider有几个子类 #共有三个子类:QDial QScrollBar QSlider #QAbstractSlider是抽象类,在窗口中不能显示,所以下面借助于它的子类来验证它的功能 sd=QSlider(self) #创建一个竖直滑块 sd.move(50,50) sd.setMaximum(80) #设置最大值,默认99 #maximum() -> int 返回最大值 sd.setMinimum(10) #设置最小值,默认0 #minimum() -> int 返回最小值 sd.setValue(60) #设置当前值 print(sd.value()) #返回当前值 sd.setSingleStep(5) #设置単步步长--小步长 #按键盘的上下箭头才有效 #singleStep() -> int 返回単步步长 sd.setPageStep(10) #设置页步长 #按键盘的PgUp PgDn才有效 #pageStep() -> int 返回页步长 sd.setTracking(True) #是否追踪-默认值True #如果设为False 鼠标拖拽滑块时,只有释放鼠标后,才会发出valueChanged信号 #hasTracking() -> bool 返回是否追踪 sd.setSliderPosition(50) #设置滑块的位置 #如果setTracking设置为False时,这条指令不会发出valueChanged信号 #sliderPosition() -> int 返回滑块的位置 sd.setInvertedAppearance(True) #倒立外观-大小头反过来 #invertedAppearance() -> bool 返回是否倒立外观 sd.setInvertedControls(True) #操作反转--上下键位反过来 #invertedControls() -> bool 返回是否操作反转 sd.setOrientation(Qt.Vertical) #设置滑块方向 #Qt.Horizontal 水平 #Qt.Vertical 竖直--默认 #orientation() -> Qt.Orientation 返回滑块的方向 #setSliderDown(bool) 设置是否按下 #isSliderDown() -> bool 返回isSliderDown() -> bool # 信号 sd.valueChanged.connect(self.AA) # 滑块的值发生改变时发出信号 # 会向槽函数传递一个值--滑块对应的值 #sd.sliderPressed.connect(self.BB) #滑块被按下时发出信号 #sd.sliderMoved.connect(self.CC) #滑块被移动时发出信号 # 会向槽函数传递一个值--滑块对应的值 #sd.sliderReleased.connect(self.DD) #滑块被释放时发出信号 sd.actionTriggered.connect(self.EE) #滑块有行为时发出信号 #会向槽函数传递一个参数--行为值 #QAbstractSlider.SliderSingleStepAdd=1 単步步长增加时 #QAbstractSlider.SliderSingleStepSub=2 単步步长减小时 #QAbstractSlider.SliderPageStepAdd=3 页步长增加时 #QAbstractSlider.SliderPageStepSub=4 页步长减小时 #QAbstractSlider.SliderMove=7 滑块移动时 #rangeChanged(int min,int max) 当最大值最小值发生变化时 def EE(self,val): print('滑块的行为是:',val) def DD(self): print('滑块被释放了') def CC(self,val): print('滑块被移动了',val) def AA(self,val): self.label.setText(str(val)) pass def BB(self): print('滑块被按下了') if __name__ == '__main__': app = QApplication(sys.argv) demo = Demo() demo.show() sys.exit(app.exec_())
子类 QSlider
样式:
import sys from PyQt5.QtWidgets import QApplication, QWidget,QSlider class Demo(QWidget): def __init__(self): super().__init__() self.resize(300,300) sd=QSlider(self) sd.move(100,50) sd.resize(30,250) sd.setTickPosition(QSlider.TicksBothSides) #设置刻度线 #QSlider.NoTicks=0 不要画任何刻度线。 #QSlider.TicksBothSides=3 在凹槽两侧画刻度线。 #QSlider.TicksAbove=1 在(水平)滑块上方绘制刻度线 #QSlider.TicksBelow=2 在(水平)滑块下方绘制刻度线 #QSlider.TicksLeft=1 在(垂直)滑块的左侧绘制刻度线 #QSlider.TicksRight=2 在(垂直)滑块右侧绘制刻度线 #sd.tickPosition() -> QSlider.TickPosition 返回刻度线 sd.setTickInterval(5) #刻度线间隔 #sd.tickInterval() -> int 返回刻度线间隔 if __name__ == '__main__': app = QApplication(sys.argv) demo = Demo() demo.show() sys.exit(app.exec_())
子类 QScrollBar
import sys from PyQt5.QtWidgets import QApplication, QWidget,QScrollBar from PyQt5.QtCore import Qt class Demo(QWidget): def __init__(self): super().__init__() self.resize(300,300) #使用户能够访问比用于显示它的窗口小部件更大的文档部分 #一般是结合QAbstractScrollArea使用 #滚动条通常包括四个单独的控件:滑块,滚动箭头和页面控件 sb=QScrollBar(self) sb.resize(20,280) sb.move(270,0) sb1 = QScrollBar(self) sb1.setOrientation(Qt.Horizontal) sb1.resize(280,20) sb1.move(0,280) #滑块的长度=页步长 sb.valueChanged.connect(self.AA) sb.grabKeyboard() #捕获键盘 #这个有2个控件可以捕获键盘,不设置的话系统不知道让哪个控件来捕获 def AA(self,val): print(val) if __name__ == '__main__': app = QApplication(sys.argv) demo = Demo() demo.show() sys.exit(app.exec_())
QDial-圆形滑块
import sys from PyQt5.QtWidgets import QApplication, QWidget,QDial from PyQt5.QtCore import Qt class Demo(QWidget): def __init__(self): super().__init__() self.resize(300,300) dl=QDial(self) dl.move(100,100) dl.valueChanged.connect(self.AA) dl.setNotchesVisible(True) #是否显示刻度 #notchesVisible() -> bool 返回是否显示刻度 #大刻度--页步长 小刻度--単步步长 #dl.setWrapping(True) #是否启用包裹 #启用则会在控件周边都设置上刻度, 可以任意指向 #wrapping() -> bool 返回是否启用包裹 dl.setNotchTarget(10) #设置多少间距一个刻度 #浮点数,表示值10一个刻度 #notchTarget() -> float 返回这个值 def AA(self,val): print(val) if __name__ == '__main__': app = QApplication(sys.argv) demo = Demo() demo.show() sys.exit(app.exec_())
天子骄龙