Python桌面开发pyqt5—QAbstractSlider及子类

QSlider

在这里插入图片描述

简单方法

sd = QSlider(self)
sd.resize(250, 30)

# 刻度画在哪边
sd.setTickPosition(QSlider.TicksLeft)	# 左边
# 每隔多少值加一个刻度
sd.setTickInterval(5)		# 默认是10
# 设置最值
sd.setMaximum(100)			# 最大值
sd.setMinimum(0)			# 最小值
# 设置当前值
sd.setValue(55)
# 获取当前值
sd.value()
# 设置步长
sd.setSingleStep(5)  		# 只对鼠标点击上下箭头有用,对鼠标拖拽不管用。默认为1步
sd.setPageStep(20)  		# 设置PgUp一次移动20步,默认为10步。
# 追踪设置
sd.setTracking(False)  		# 追踪设置,默认True(追踪)。当鼠标拖拽滑块运动,数值是否改变
# 获取是否为追踪状态
sd.hasTracking()
# 滑块位置的设置
sd.setSliderPosition(20)  	# 不一定改变值。当为追踪状态就改变,非追踪状态不改变
# 设置是否倒立
sd.setInvertedAppearance(True)  # 默认为False
# 设置控制反转
sd.setInvertedControls(True)  	# 在倒立下,按上箭头滑块不再向下滚动
# 设置滑块方向
sd.setOrientation(Qt.Horizontal)  # 水平放置 

信号

label = QLabel('0', self)
label.move(200, 200)
label.resize(150, 30)
sd = QSlider(self)
sd.move(100, 100)

# sd.valueChanged.connect(lambda var:label.setText(str(var)))	#获取值_0
sd.valueChanged.connect(lambda: label.setText(str(sd.value())))  # 获取值_1

# 滑块移动信号
sd.sliderMoved.connect(lambda var: print(var))  # 返回当前的值,仅对鼠标操作有效
# 发生了某种行为的信号
sd.actionTriggered.connect(lambda var: print(var))  # 返回枚举值,对应不同的行为
# 值的范围改变信号
sd.rangeChanged.connect(lambda min_, max_: print(min_, max_))  # 只有用代码改变了最值才会触发
sd.setMaximum(100)

案例

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

    def add_label(self):
        self.label = QLabel('0', self)
        self.label.hide()  # 开始隐藏标签
        self.label.setStyleSheet('color:red;')

    def mousePressEvent(self, event):
        super().mousePressEvent(event)
        x = 0
        y = (1 - self.value() / (self.maximum() - self.minimum())) * (self.height() - self.label.height())
        self.label.show()
        self.label.move(x, y)

    def mouseMoveEvent(self, event):
        super().mouseMoveEvent(event)
        x = 0
        y = (1 - self.value() / (self.maximum() - self.minimum())) * (self.height() - self.label.height())
        self.label.move(x, y)
        self.label.setText(str(self.value()))  # 值不断变化
        self.label.adjustSize()  # 根据内容调整标签尺寸大小,以免显示不全数值

sd = Slider(self)
sd.resize(80, 250)
sd.move(100, 10)

在这里插入图片描述

QScrollBar

在这里插入图片描述

简单方法

sb = QScrollBar(self)
sb.resize(30, 200)
sb.move(10, 10)

# 可在构造函数传入参数0控制方向
sb_1 = QScrollBar(Qt.Horizontal, self)
sb_1.resize(200, 30)
sb_1.move(50, 10)

# 设置PgUp和PgDn的步长
sb.setPageStep(50)
# 指定哪个控件捕获键盘事件
sb.grabKeyboard()

信号

sb = QScrollBar(self)
# 值改变的信号
sb.valueChanged.connect(lambda val: print(val))

QDial

在这里插入图片描述

简单方法

dia = QDial(self)

# 设置范围
dia.setRange(0, 100)  # 默认0-99
# 设置刻度可见
dia.setNotchesVisible(True)  # 默认False
# 设置PgUp的步长
dia.setPageStep(25)  # 默认1
# 开启数值循环
dia.setWrapping(True)  # 默认False
# 设置每隔多少值画一个刻度
dia.setNotchTarget(10)  # 显示100/10个刻度

信号

label = QLabel('你好啊!', self)
label.move(100, 100)
dia = QDial(self)

# 值改变
def func(value):
    label.setStyleSheet('font-size:{}px;'.format(value))
    label.adjustSize()  # 调整大小这个方法必须必须放在槽函数中!
dia.valueChanged.connect(func)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值