PyQt5之QAbstractSlider

1.描述

提供一定范围内的整数值调节。继承自QWidget

2.功能作用

(1) 数值范围

setMaximum(int)
maximum() -> int
setMinimum(int)
minimum() -> int

(2) 当前数值

setValue(int)
value() -> int

(3) 步长

setPageStep(int)
pageStep() -> int
setSingleStep(int)
singleStep() -> int

(4) 是否追踪

# value是否跟随着滑块的位置变化而变化, 默认值为True
setTracking(bool enable)
hasTracking() -> bool

(5) 滑块位置

setSliderPosition(int)
sliderPosition() -> int

(6) 倒立外观

# 滑块大小头翻转
setInvertedAppearance(bool)
invertedAppearance() -> bool

(7) 操作反转

# 上下键位翻转
setInvertedControls(bool)
invertedControls() -> bool

(8) 滑块方向

# 控制外观方向,调整滑块水平或垂直
setOrientation(Qt.Orientation)
orientation() -> Qt.Orientation

(9) 是否按下

setSliderDown(bool)
isSliderDown() -> bool

3.信号

valueChanged()
sliderPressed()
sliderMoved(int value)
sliderReleased()
actionTriggered(int action)
"""
action可能值:
    QAbstractSlider.SliderNoAction
    QAbstractSlider.SliderSingleStepAdd
    QAbstractSlider.SliderSingleStepSub
    QAbstractSlider.SliderPageStepAdd
    QAbstractSlider.SliderPageStepSub
    QAbstractSlider.SliderToMinimum
    QAbstractSlider.SliderToMaximum
    QAbstractSlider.SliderMove
"""
rangeChanged(int minint max)

4.相关子类

(1) QSlider

# 描述:垂直或水平滑块,它允许用户沿水平或垂直凹槽移动滑块手柄,并将手柄的位置转换为合法范围内的整数值
# 继承自QAbstractSlider

# 刻度控制
setTickPosition(self, QSlider.TickPosition)
"""
    QSlider.NoTicks 不画任何刻度线。
    QSlider.TicksBothSides 在凹槽两侧画刻度线。
    QSlider.TicksAbove 在(水平)滑块上方绘制刻度线
    QSlider.TicksBelow 在(水平)滑块下方绘制刻度线
    QSlider.TicksLeft 在(垂直)滑块的左侧绘制刻度线
    QSlider.TicksRight 在(垂直)滑块右侧绘制刻度线
"""
sd.tickPosition() -> QSlider.TickPosition
sd.setTickInterval(int) # 值间隔,如果为0,滑块将在singleStep和pageStep之间进行选择
sd.tickInterval() -> int

案例

from PyQt5.Qt import *
import sys


class Slider(QSlider):
    def __init__(self, parent=None, *args, **kwargs):
        super().__init__(parent, *args, **kwargs)
        self.move(200, 200)
        self.resize(30, 200)
        self.setTickPosition(QSlider.TicksBothSides)

        self.setup_ui()

    def setup_ui(self):
        self.label = QLabel(self)
        self.label.setText("0")
        self.label.setStyleSheet("color: red;")
        self.label.hide()

    def mousePressEvent(self, evt):
        super().mousePressEvent(evt)
        x = (self.width() - self.label.width()) // 2
        y = (1 - self.value() / (self.maximum() - self.minimum())) * (self.height() - self.label.height())
        self.label.move(x, int(y))
        self.label.adjustSize()

    def mouseMoveEvent(self, evt):
        super().mouseMoveEvent(evt)
        self.label.show()
        x = (self.width() - self.label.width()) // 2
        y = (1 - self.value() / (self.maximum() - self.minimum())) * (self.height() - self.label.height())
        self.label.move(x, int(y))
        self.label.setText(str(self.value()))

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("案例")
        self.resize(500, 500)

        self.setup_ui()

    def setup_ui(self):
        slider = Slider(self)



if __name__ == "__main__":
    app = QApplication(sys.argv)

    window = Window()

    window.show()

    sys.exit(app.exec_())

(2) QScrollBar

# 描述 滚动条,使用户能够访问比用于显示它的窗口小部件更大的文档部分
# 继承自QAbstractSlider

# 创建
QScrollBar()
# 使用时需手动调整大小

(3) QDial

# 描述 倒圆的范围控制, 比如汽车仪表盘上的速度计
# 继承自QAbstractSlider

# 是否显示刻度
setNotchesVisible(bool)
notchesVisible() -> bool

# 大刻度控制
setPageStep(int)

# 是否启用包裹
setWrapping(bool) # 启用则会在控件周边都设置上刻度, 可以任意指向
wrapping() -> bool

# 凹口之间的目标像素数
setNotchTarget(float)
notchTarget() -> float

# 缺口大小
notchSize() # 默认值1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值