zoukankan      html  css  js  c++  java
  • 滑块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_())

    天子骄龙

  • 相关阅读:
    Linux下Tomcat服务器-maven项目部署
    数据库设计感悟
    数据库设计规范
    从零到一: 代码调试
    Java泛型与反射的综合应用
    Eclipse中,tomcat插件方式启动项目
    集合查询表--Map
    集合线性表--List之LinkedList(队列与栈)
    集合线性表--List之ArrayList
    Java中的日期操作
  • 原文地址:https://www.cnblogs.com/liming19680104/p/11011385.html
Copyright © 2011-2022 走看看