滚动条
- Slider handle:此控件用于快速移动到文档或图像的任何部分。
- Scroll arrows: 这些是滚动条两侧的箭头,用于查看当前不可见的文档或图像的所需区域。使用这些滚动箭头时,滑动手柄的位置将移动以显示文档或图像中的当前位置
- Page control: 页面控件是滚动条的背景,在滚动条上拖动滑块句柄。单击背景时,滑块控制柄向单击一页的方向移动。滑块控制柄移动的量可以通过pageStep属性指定。页面步进是当用户按向上和向下翻页键时滑块移动的量。可以使用setPageStep()方法设置pageStep属性的数量
QScrollBar类
- setValue()
- minimum()
- maximum()
- setMinimum()
- setMaximum()
- setSingleStep()
- setPageStep()
QScrollBar类可发送的信号:
- valueChanged()
- sliderPressed()
- sliderMoved()
- sliderReleased()
- actionTriggered()
实例
- 创建Dialog without Buttons模板窗口
- 拖入horizontal 和 vertical 滚动条和滑块
- 拖入四个Label部件和一个Line Edit部件
- 设定水平滚动条的object Name属性为horizontalScrollBarSugarLevel,垂直滚动条的object Name属性为verticalScrollBarPulseRate,水平滑块的object Name为horizontalSliderBloodPressure,垂直滑块的object Name为verticalSliderCholestrolLevel
- 设定Line Edit部件的objectName属性为lineEditResult
- 保存为demoSliders.ui文件
- 使用pyuic生成demoSliders.py文件
- 创建calldemoSliders.py文件,代码如下
import sys
from PyQt5.QtWidgets import QDialog,QApplication
from cookbook_200420.demoSliders import *
class MyForm(QDialog):
def __init__(self):
super().__init__()
self.ui=Ui_Dialog()
self.ui.setupUi(self)
self.ui.horizontalScrollBarSugarLevel.valueChanged.connect(self.scrollhorizontal)
self.ui.verticalScrollBarPulseRate.valueChanged.connect(self.scrollvertical)
self.ui.horizontalSliderBloodPressure.valueChanged.connect(self.sliderhorizontal)
self.ui.verticalSliderCholestrolLevel.valueChanged.connect(self.slidervertical)
self.show()
def scrollhorizontal(self,value):
self.ui.lineEditResult.setText("Sugar Level : "+str(value))
def scrollvertical(self,value):
self.ui.lineEditResult.setText("Pulse Rate : "+str(value))
def sliderhorizontal(self,value):
self.ui.lineEditResult.setText("Blood Pressure : "+str(value))
def slidervertical(self,value):
self.ui.lineEditResult.setText("Cholestrol Level : "+str(value))
if __name__=="__main__":
app=QApplication(sys.argv)
w=MyForm()
w.show()
sys.exit(app.exec())
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'demoSliders.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(400, 300)
self.horizontalScrollBarSugarLevel = QtWidgets.QScrollBar(Dialog)
self.horizontalScrollBarSugarLevel.setGeometry(QtCore.QRect(150, 30, 160, 16))
self.horizontalScrollBarSugarLevel.setOrientation(QtCore.Qt.Horizontal)
self.horizontalScrollBarSugarLevel.setObjectName("horizontalScrollBarSugarLevel")
self.horizontalSliderBloodPressure = QtWidgets.QSlider(Dialog)
self.horizontalSliderBloodPressure.setGeometry(QtCore.QRect(150, 70, 160, 22))
self.horizontalSliderBloodPressure.setOrientation(QtCore.Qt.Horizontal)
self.horizontalSliderBloodPressure.setObjectName("horizontalSliderBloodPressure")
self.verticalScrollBarPulseRate = QtWidgets.QScrollBar(Dialog)
self.verticalScrollBarPulseRate.setGeometry(QtCore.QRect(150, 120, 21, 111))
self.verticalScrollBarPulseRate.setOrientation(QtCore.Qt.Vertical)
self.verticalScrollBarPulseRate.setObjectName("verticalScrollBarPulseRate")
self.verticalSliderCholestrolLevel = QtWidgets.QSlider(Dialog)
self.verticalSliderCholestrolLevel.setGeometry(QtCore.QRect(290, 120, 21, 111))
self.verticalSliderCholestrolLevel.setOrientation(QtCore.Qt.Vertical)
self.verticalSliderCholestrolLevel.setObjectName("verticalSliderCholestrolLevel")
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(40, 30, 101, 21))
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(Dialog)
self.label_2.setGeometry(QtCore.QRect(40, 70, 101, 21))
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(Dialog)
self.label_3.setGeometry(QtCore.QRect(40, 130, 81, 21))
self.label_3.setObjectName("label_3")
self.label_4 = QtWidgets.QLabel(Dialog)
self.label_4.setGeometry(QtCore.QRect(200, 130, 81, 21))
self.label_4.setObjectName("label_4")
self.lineEditResult = QtWidgets.QLineEdit(Dialog)
self.lineEditResult.setGeometry(QtCore.QRect(40, 240, 311, 31))
self.lineEditResult.setObjectName("lineEditResult")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label.setText(_translate("Dialog", "Sugar Level"))
self.label_2.setText(_translate("Dialog", "Blood Pressure"))
self.label_3.setText(_translate("Dialog", "Pulse rate"))
self.label_4.setText(_translate("Dialog", " Cholesterol"))