当前位置:网站首页>PyQt5快速开发与实战 4.7 QSpinBox(计数器) and 4.8 QSlider(滑动条)
PyQt5快速开发与实战 4.7 QSpinBox(计数器) and 4.8 QSlider(滑动条)
2022-07-27 17:47:00 【Ding Jiaxiong】
PyQt5快速开发与实战
文章目录
4. 第4章 PyQt5 基本窗口控件
4.7 QSpinBox(计数器)
QSpinBox是一个计数器控件,允许用户选择一个整数值,通过单击向上/向下按钮或按键盘上的上/下箭头来增加/减少当前显示的值,当然用户也可以输入值。
在默认情况下,QSpinBox的取值范围是0~99,每次改变的步长值为1。QSpinBox类和QDoubleSpinBox类均派生自QAbstractSpinBox类。
QSpinBox用于处理整数值,QDoubleSpinBox则用于处理浮点值,它们之间的区别就是处理数据的类型不同,其他功能都基本相同。QDoubleSpinBox的默认精度是两位小数,但可以通过setDecimals()来改变。
4.7.1 QSpinBox类中的常用方法
| 方法 | 描述 |
|---|---|
| setMinimum() | 设置计数器的下界 |
| setMaximum() | 设置计数器的上界 |
| setRange() | 设置计数器的最大值、最小值和步长值 |
| setValue() | 设置计数器的当前值 |
| Value() | 返回计数器的当前值 |
| singleStep() | 设置计数器的步长值 |
每次单击向上/向下按钮时,QSpinBox计数器都会发射 valueChanged信号,可以从相应的槽函数中通过value()函数获得计数器的当前值。
4.7.2 QSpinBox的使用
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class spindemo(QWidget):
def __init__(self,parent = None):
super(spindemo, self).__init__(parent)
self.setWindowTitle("SpinBox案例")
self.resize(300 , 100)
layout = QVBoxLayout()
self.l1 = QLabel("current value:")
self.l1.setAlignment(Qt.AlignCenter)
layout.addWidget(self.l1)
self.sp = QSpinBox()
layout.addWidget(self.sp)
self.sp.valueChanged.connect(self.valuechange)
self.setLayout(layout)
def valuechange(self):
self.l1.setText("current value :" + str(self.sp.value()))
if __name__ == '__main__':
from pyqt5_plugins.examples.exampleqmlitem import QtCore
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
app = QApplication(sys.argv)
win = spindemo()
win.show()
sys.exit(app.exec_())

4.8 QSlider(滑动条)
QSlider 控件提供了一个垂直或水平的滑动条,滑动条是一个用于控制有界值的典型控件,它允许用户沿水平或垂直方向在某一范围内移动滑块,并将滑块所在的位置转换成一个合法范围内的整数值。有时候这种方式比输入数字或者使用SpinBox(计数器)更加自然。在槽函数中对滑块所在位置的处理相当于从整数之间的最小值和最高值进行取值。
一个滑块条控件可以以水平或垂直的方式显示,在构造函数中进行设置。
self.sp=QSlider(Qt.Horizontal)
self.sp=QSlider(Qt.Vertical)
4.8.1 QSlider类中的常用方法
| 方法 | 描述 |
|---|---|
| setMinimum() | 设置滑动条控件的最小值 |
| setMaximum() | 设置滑动条控件的最大值 |
| setSingleStep() | 设置滑动条控件递增/递减的步长值 |
| setValue() | 设置滑动条控件的值 |
| value() | 获得滑动条控件的值 |
| setTickInterval() | 设置刻度间隔 |
| setTickPosition() | 设置刻度标记的位置,可以输入一个枚举值,这个枚举值指定刻度线相对于滑块和用户操作的位置,以下是可以输入的枚举值t - QSlider.NoTicks,不绘制任何刻度线 - QSlider.TicksBothSides,在滑块的两侧绘制刻度线 - QSlider.TicksAbove,在(水平)滑块上方绘制刻度线 - QSlider.TicksBelow,在(水平)滑块下方绘制刻度线 QSlider.TicksLeft,在(垂直)滑块左侧绘制刻度线 - QSlider.TicksRight,在(垂直)滑块右侧绘制刻度线 |
4.8.2 QSlider类中的常用信号
| 信号 | 描述 |
|---|---|
| valueChanged | 当滑块的值发生改变时发射此信号,此信号是最常用的 |
| sliderPressed | 当用户按下滑块时发射此信号 |
| sliderMoved | 当用户拖动滑块时发射此信号 |
| sliderReleased | 当用户释放滑块时发射此信号 |
4.8.3 QSlider的使用案例
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class SliderDemo(QWidget):
def __init__(self,parent = None):
super(SliderDemo, self).__init__(parent)
self.setWindowTitle("QSlider案例")
self.resize(300 , 100)
layout = QVBoxLayout()
self.l1 = QLabel("Hello DingJiaxiong")
self.l1.setAlignment(Qt.AlignCenter)
layout.addWidget(self.l1)
# 水平
self.s1 = QSlider(Qt.Horizontal)
# 设置最小值
self.s1.setMinimum(10)
# 设置最大值
self.s1.setMaximum(50)
# 步长
self.s1.setSingleStep(3)
# 设置当前值
self.s1.setValue(20)
## 刻度位置
self.s1.setTickPosition(QSlider.TicksBelow)
# 设置刻度间隔
self.s1.setTickInterval(5)
layout.addWidget(self.s1)
# 连接信号槽
self.s1.valueChanged.connect(self.valuechange)
self.setLayout(layout)
def valuechange(self):
print("Current slider value = %s" % self.s1.value())
size = self.s1.value()
self.l1.setFont(QFont("Arial",size))
if __name__ == '__main__':
from pyqt5_plugins.examples.exampleqmlitem import QtCore
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
app = QApplication(sys.argv)
win = SliderDemo()
win.show()
sys.exit(app.exec_())

边栏推荐
- 【OpenBMC 系列】4.启动流程 使用qume模拟ast2600-evb
- Detailed introduction to common coordinate system of cesium
- JS array method foreach and map comparison
- es6删除对象的属性_ES6删除对象中的某个元素「建议收藏」
- PMP practice once a day | don't get lost in the exam -7.27 (including agility + multiple choices)
- JS实现视频录制-以Cesium为例
- mysql函数汇总之系统信息函数
- What does bus mean
- uva1377
- Membership card head assembly usage document
猜你喜欢

ViewUI 中 DatePicker 日期选择器在 IE11 浏览器中兼容解决方案

连接池-归还连接详解(上)

mysql数据库中的数据如何加密呢?mysql8.0自带新特性

Connection pool - return connection details (Part 1)

Rodin 安装 SMT Solvers 插件

信道容量、信道带宽基本概念的理解

由单片机XTALIN引脚和XTALOUT引脚导出的对晶体震荡电路的深入理解

Common errors reported by pytorch

C background GC cause and effect

China business CDP white paper | love Analysis Report
随机推荐
联发科发布中端游戏手机芯片Helio G80
内置函数时间日期函数
Function priority
Introduction to basic cesium controls
LG Group announced that it would donate 3million yuan in cash, 1.2 million masks and 10000 sets of protective clothing to Hubei
UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xff in position 0: invalid start byte
Rodin installs the SMT solvers plug-in
Online judge output overrun
Chapter 3 basic operation
Normalization and standardization
C # network application programming, experiment 1: WPF exercise
PKI/TLS 工具之CFSSL —— 筑梦之路
Compiling ncnn with vs
'vite' is not an internal or external command, nor is it a runnable program or batch file
传英特尔将停掉台积电16nm代工的Nervana芯片
调整数组使奇数全部都位于偶数前
How to quickly improve the three minute response rate of Tiktok store? What will affect the reply rate of Tiktok store?
内置函数其它函数
Ms721 load test
函数优先顺序