QSlider功能作用和信号

1、QSlider功能作用和信号

刻度控制:在控件的周边显示一些刻度线展示给用户看,类似于温度计所展示的效果。

设置刻度线所展示的位置:settTickPosition()。

设置刻度线密度。

sd.setPageStep(5):不仅调整刻度,也会影响页的步长(pagedown和pageup)

每隔五个绘制一个 sd.setTickInterval(5):仅调整刻度,并非控制页的步长。

        #sd.setPageStep(5)
        # 每隔五个绘制一个
        sd.setTickInterval(5)

2、QSlider---拓展案例:

在滑块移动时,通过标签展示滑块当前的数值,并要求标签位置一直在滑块所在位置中间。

滑块移动时值改变,展示当前数据;滑块与标签位置需要保持一直(需要计算滑块位置)。

x的位置需要计算,y的位置与滑块保持一致即可;值的比例和高度比例应该相等。(y位置需要求解的是一个像素),高度像素和整个控件的比例。

                            

方法1:自定义控件类别,子类化控件,在他的内部监听鼠标的点击和移动。

坐标计算:(控件需要移动的距离是红色部分)

                                      

from PyQt5.Qt import *

# # 为了兼容引入如下参数
class Slider(QSlider):
    def __init__(self, parent=None, *args, **kwargs):
        super().__init__(parent=None, *args, **kwargs)
        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.show()
        self.label.move(x, y)

    # 鼠标移动方法
    def mouseMoveEvent(self, evt):
        super().mouseMoveEvent(evt)
        x = (self.width() - self.label.width()) / 2
        y = (1 - self.value() / (self.maximum() - self.minimum()) * self.height() - self.height())
        self.label.show()
        self.label.move(x, y)
        # 改变标签内部的数值
        self.label.setText(str(self.value()))
        self.label.adjustSize()

    # 监听鼠标释放方法
    # def mouseReleaseEvent(self, evt):
    #     super().mouseReleaseEvent(evt)
    #     #self.label.hide()

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QSlider的学习")
        self.resize(500, 500)
        self.setup_ui()

    def setup_ui(self):
        # 控件1
        slider = Slider()
        slider.setParent(self)
        slider.move(200, 200)
        slider.resize(30, 200)

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    window = Window()
    window.resize(500, 500)
    window.show()

    sys.exit(app.exec_())

 3、QScrollBar()功能作用:用于显示比他的窗口小部件更大的物体,很少单独使用。

空白区域即页面控件。 

 

监听滚动条值的变化,根据变化值做相关处理就可以了。(监听用户拖拽滚动条应该怎么做)

控件的尺寸需要手动调整。

可滚动区域:最大值-最小值;

控件宽度:可滚动区域+Page Step(滑块的宽度)

from PyQt5.Qt import *

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QScrollBar的学习")
        self.resize(500, 500)
        self.setup_ui()

    def setup_ui(self):
        sb = QScrollBar(self)
        # 这个控件需要手动调整大小
        sb.resize(30, 200)
        sb.move(100, 100)

        sb2 = QScrollBar(Qt.Horizontal, self)
        sb2.resize(200, 30)
        sb2.move(100, 100)

        sb.valueChanged.connect(lambda val: print(val))
        # 滑块高度变高
        sb.setPageStep(50)

        # 捕获当前键盘
        sb.grabKeyboard()

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    window = Window()
    window.resize(500, 500)
    window.show()

    sys.exit(app.exec_())

调节滑块的宽和高可以根据page step修改。

通过page up控制控件高度。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

。七十二。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值