本篇Pyside6的第十二篇,依旧是开启新功能。QSlider滑动条。
这个在日常开发工具中,比较少用到,不按之前的套路走了,直接上一个示例代码,回到代码中学习。
import sys from PySide6.QtWidgets import QWidget, QApplication, QSlider class Lider(QWidget): def __init__(self): super().__init__() self.setWindowTitle("QSlider") self.setGeometry(300, 300, 600, 400) self.setup_ui() def setup_ui(self) -> None: """设置界面""" self.slider = QSlider(self) self.slider.setGeometry(100, 100, 80, 200) if __name__ == "__main__": app = QApplication(sys.argv) window = Lider() window.show() sys.exit(app.exec())
这样看着着实丑陋。
❝了解一下.setTickPosition函数方法
❞
setTickPosition
❝setTickPosition() 设置刻度标记的位置,可以输入一个枚举值,这个枚举值指定刻度线想当与滑块和用户操作的位置,以下是可以输入的枚举值:
❞
QSlider.NoTicks:不绘制任何刻度线 QSlider.TicksBothSides:在滑块的两侧绘制刻度线 QSlider.TicksAbove:在滑块的(水平)上方绘制刻度线 QSlider.TicksBelow:在滑块的(水平)下方绘制刻度线 QSlider.TicksLeft:在滑块的(垂直)左侧绘制刻度线 QSlider.TicksRight,在滑块的(垂直)右侧绘制刻度线
import sys from PySide6.QtWidgets import QWidget, QApplication, QSlider class Lider(QWidget): def __init__(self): super().__init__() self.setWindowTitle("QSlider") self.setGeometry(300, 300, 600, 400) self.setup_ui() def setup_ui(self) -> None: """设置界面""" self.slider = QSlider(self) self.slider.setGeometry(100, 100, 80, 200) # 在两侧绘制刻度线 self.slider.setTickPosition(QSlider.TickPosition.TicksBothSides) if __name__ == "__main__": app = QApplication(sys.argv) window = Lider() window.show() sys.exit(app.exec())
显示方式
上述显示都是垂直的,所以这里我们改变一下。
self.sp=QSlider(Qt.Horizontal) self.sp=Qslider(Qt.Vertical)
import sys from PySide6.QtCore import Qt from PySide6.QtWidgets import QWidget, QApplication, QSlider class Lider(QWidget): def __init__(self): super().__init__() self.setWindowTitle("QSlider") self.setGeometry(300, 300, 600, 400) self.setup_ui() def setup_ui(self) -> None: """设置界面""" self.slider = QSlider(Qt.Horizontal,self) self.slider.setGeometry(100, 100, 200, 80) # 在两侧绘制刻度线 self.slider.setTickPosition(QSlider.TickPosition.TicksBothSides) if __name__ == "__main__": app = QApplication(sys.argv) window = Lider() window.show() sys.exit(app.exec())
其他操作
setMinimum 设置滑动条控件的最小值 setMaximum 设置滑动条控件的最大值 setSingleStep 设置滑动条控件的步长 setValue 设置滑动条控件的值 value 获取滑动条控件的值 setTickInterval 设置刻度间隔
import sys from PySide6.QtCore import Qt from PySide6.QtWidgets import QWidget, QApplication, QSlider class Lider(QWidget): def __init__(self): super().__init__() self.setWindowTitle("QSlider") self.setGeometry(300, 300, 600, 400) self.setup_ui() def setup_ui(self) -> None: """设置界面""" self.slider = QSlider(Qt.Horizontal,self) self.slider.setGeometry(100, 100, 200, 80) self.slider.setMaximum(100) # 设置最大值 self.slider.setMinimum(0) # 设置最小值 self.slider.setValue(10) # 设置默认滑动值 print(self.slider.value()) # 获取值 self.slider.setTickInterval(10) # 设置步长 # 在两侧绘制刻度线 self.slider.setTickPosition(QSlider.TickPosition.TicksBothSides) if __name__ == "__main__": app = QApplication(sys.argv) window = Lider() window.show() sys.exit(app.exec())
信号与槽+案例
valueChanged 当滑块的值发生改变时发射此信号,此信号是最常用的 sliderPressed 当用户按下滑块时发射此信号 sliderMoved 当用户拖动滑块时发射此信号 sliderReleased 当用户释放滑块时发射此信号
import sys from PySide6.QtCore import Qt from PySide6.QtWidgets import QWidget, QApplication, QSlider, QLabel class Lider(QWidget): def __init__(self): super().__init__() self.setWindowTitle("QSlider") self.setGeometry(300, 300, 600, 400) self.setup_ui() def setup_ui(self) -> None: """设置界面""" self.slider = QSlider(Qt.Horizontal, self) self.slider.setGeometry(100, 100, 200, 80) self.slider.setMaximum(100) # 设置最大值 self.slider.setMinimum(0) # 设置最小值 self.slider.setValue(10) # 设置默认滑动值 self.slider.setTickInterval(10) # 设置步长 # 在两侧绘制刻度线 self.slider.setTickPosition(QSlider.TickPosition.TicksBothSides) self.label = QLabel(self) self.label.setGeometry(200, 200, 30, 30) self.slider.valueChanged.connect(self.sliderSlot) # 当滑块的值发生改变时发射此信号 def sliderSlot(self): value = self.slider.value() self.label.setText(str(value)) self.label.setStyleSheet(f"background-color: rgb(255, 200, {value + 50});") if __name__ == "__main__": app = QApplication(sys.argv) window = Lider() window.show() sys.exit(app.exec())
最后代码放在了gitee:
https://gitee.com/qinganan_admin/Pyside6_Information/blob/master/%E7%AC%AC%E5%85%AB%E7%AB%A0%EF%BC%8CSlider%E6%BB%91%E5%9D%97/QSlider.py