七、PyQT5控件——QSlider,QSpinBox

一、Qslider

QSlider是一个滑动条,可以设置成水平或垂直放置。最常用的方法允许用户在某一范围内互动该滑块,并将滑块的位置转换成一个整数值(int类型),这种方式可以在某一个范围内平顺的变动,并触发valuechangd信号,产生相应变化。但QSlider能发射的信号并不局限于这一种:

  • valuechanged。滑块位置变动时发射此信号;
  • sliderPressed。当用户按下滑块时就会发射该信号;
  • sliderMoved。当用户拖动滑块时发射信号;
  • sliderReleased。用户释放滑块时发射该信号。

 1 import sys,os
 2 from PyQt5.QtWidgets import QWidget,QSlider,QApplication,QLabel,QVBoxLayout
 3 from PyQt5.QtGui import QIcon
 4 from PyQt5.QtCore import Qt
 5
 6 path = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
 7
 8 class MyWindow(QWidget):
 9
10     def __init__(self):
11         super().__init__()
12         self.initUI()
13
14     def initUI(self):
15         self.setWindowTitle(‘QSlider示例‘)
16         self.setWindowIcon(QIcon(r‘%s\4.图标素材\chuan.ico‘ % path))
17         self.setGeometry(600,300,300,150)
18
19         self.lbl = QLabel(‘当前值为:0‘)
20         self.sl = QSlider(Qt.Horizontal)
21         self.sl.setMaximum(20) #设定最大值
22         self.sl.setMinimum(-20) #设定最小值
23         self.sl.setSingleStep(2) #设定最小值
24
25         vbx = QVBoxLayout()
26         vbx.addWidget(self.lbl)
27         vbx.addWidget(self.sl)
28         self.setLayout(vbx)
29
30         self.sl.valueChanged.connect(self.valuechanged)
31
32     def valuechanged(self):
33         #print(type(self.sl.value()))
34         self.lbl.setText(‘当前值为:‘ + str(self.sl.value()))
35
36 if __name__ == ‘__main__‘:
37     app = QApplication(sys.argv)
38     win = MyWindow()
39     win.show()
40     sys.exit(app.exec_())

QSlider示例

示例中使用Qt.Horizontal将滑块设置为水平,也可以通过Qt.Vertical将滑块设置为垂直的。需要说明的是通过setSingleStep()设置步长后,只是通过键盘移动滑块时,步长变为设定值。通过鼠标移动滑块时,步长仍然为1。而且,通过键盘的Home 键可将滑块移动至起始位置,即最小值。同理,End 键移动至结束位置(最大值)。如果不设置最大值和最小值,默认范围是0到99.

除此之外,Qslider还可以设置刻度标记,并且标记的位置可以调整。

QSlider::NoTicks 0 不绘制任何刻度线
QSlider::TicksBothSides 3 在滑块的两侧绘制刻度线
QSlider::TicksAbove 1 在(水平)滑块上方绘制刻度线
QSlider::TicksBelow 2 在(水平)滑块下方绘制刻度线
QSlider::TicksLeft TicksAbove 在(垂直)滑块左侧绘制刻度线
QSlider::TicksRight TicksBelow 在(垂直)滑块右侧绘制刻度线

二、QSpinBox

QSpinBox是一个计数器控件,允许用户选择一个整数值通过单击向上向下或者按键盘上的上下键来增加减少当前显示的值。不过也可以手动输入指定值 。和Slider一样,默认的取值范围是0到99,每次改变的步长是1 。

QSpinBox类和QDoubleSpinbox类均派生自QAbstractSpinBox类,QSpinBox用于处理整数值,QDoubleSpinBox则用于处理浮点数值,他们之间的区别就是处理数据的类型不同,其他功能基本相同,QDoubleSpinBox的默认精度是两位小数,但可以通过setDecimals()来改变。

 1 import sys,os
 2 from PyQt5.QtWidgets import QWidget,QSpinBox,QApplication,QLabel,QVBoxLayout
 3 from PyQt5.QtGui import QIcon
 4 from PyQt5.QtCore import Qt
 5
 6 path = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
 7
 8 class MyWindow(QWidget):
 9
10     def __init__(self):
11         super().__init__()
12         self.initUI()
13
14     def initUI(self):
15         self.setWindowTitle(‘QSpinBox示例‘)
16         self.setWindowIcon(QIcon(r‘%s\4.图标素材\chuan.ico‘ % path))
17         self.setGeometry(600,300,200,150)
18
19         self.lbl = QLabel(‘当前值为:0‘)
20         self.lbl.setAlignment(Qt.AlignCenter)
21         self.sp = QSpinBox()
22         # self.sp.setMaximum(-10)
23         # self.sp.setMaximum(20)
24         self.sp.setRange(-10,10)
25         self.sp.setSingleStep(2)
26
27         vbx = QVBoxLayout()
28         vbx.addWidget(self.lbl)
29         vbx.addWidget(self.sp)
30         self.setLayout(vbx)
31
32         self.sp.valueChanged.connect(self.valuechanged)
33
34     def valuechanged(self):
35         self.lbl.setText(‘当前值为:‘ + str(self.sp.value()))
36
37 if __name__ == ‘__main__‘:
38     app = QApplication(sys.argv)
39     win = MyWindow()
40     win.show()
41     sys.exit(app.exec_())

QSpinBox示例

最大值和最小值可以通过setMaxmum()和setMinimum()分别设置,也可以通过setRange()一次设定好范围。注意,亲测setRange()不能设置步长。


原文地址:https://www.cnblogs.com/chuanxiaopang/p/10562489.html

时间: 2024-10-12 16:10:20

七、PyQT5控件——QSlider,QSpinBox的相关文章

PyQt5 控件学习(一个一个学习之QAbstractButton)

QAbstractButton : 前面说的QObject 和 QWidget 是最主要的两个基类.它们都是gui (Graphical User Interface)编程中的控件的共性.下面就说下他们的子类的学习. 但是,学习它们子类的时候,我们不是按照它们的继承关系来学习的,而是按照控件的功能来学习的! 主要分为两部分:基础控件和高级控件 下面看按钮: 我们不是直接学QPushButton ,而是要先学它继承的类----QAbstactButton. QAbstractButton描述: 它

【2017-06-17】QtGui基础控件:QSpinBox及QDoubleSpinBox

今天开始一个新的系列,主要是翻译并摘录QtGui中基础空间的常用方法,并做一些简单的实验程序: 我觉得这是一个炒冷饭的行为,但有时候冷饭不能不炒,不热不好吃,而且也很容易发霉. 其实到现在这种状态,对控件所提供的方法是否熟练已经不是问题,因为我们可以经常去看Manual,更为重要的是程序的框架和数据结构,如何把数据有效组织起来,如何组合或自定义控件来实现我们想要的功能,可能更是一种能力的体现,编程嘛,主要是来解决实际问题的. 希望能通过这个系列,我能对Qt的控件.实现方法有一个更深入的理解. Q

PyQt5 控件学习(一个一个学习之QCommandLinkButton)

QCommandLinkButton: 它和QPushButton 差不多,这里稍微了解: QCommandLinkButton的功能作用: 1 from PyQt5.Qt import * #刚开始学习可以这样一下导入 2 import sys 3 #1,创建app 4 app = QApplication(sys.argv) 5 6 7 #2,控件的操作: 8 #创建控件 9 window = QWidget() 10 11 12 #设置控件 13 window.setWindowTitle

PyQt5 控件学习(一个一个学习之QRadioButton)

QRadioButton 继承图: 它是按钮中的第四个类别,就是个单选按钮! QRadioButton 描述: QRadioButton 继承: 它的父类是QAbstractButton QRadioButton 功能作用: 创建按钮控件: 1 from PyQt5.Qt import * #刚开始学习可以这样一下导入 2 import sys 3 #1,创建app 4 app = QApplication(sys.argv) 5 6 7 #2,控件的操作: 8 #创建控件 9 window =

PyQt5 控件学习(一个一个学习之QToolButton)

QToolButton 的继承图: QToolButton 之描述: 一个主窗口,我们一般分为 从上到下,标题栏 ,菜单栏(文字) ,工具栏(一般都是图标,没文字),工作区,状态栏. 我们这里说的是工具栏 QToolButton 之继承: 它继承自QAbstractButton ! QToolButton 之功能作用: 1 from PyQt5.Qt import * #刚开始学习可以这样一下导入 2 import sys 3 #1,创建app 4 app = QApplication(sys.

PyQt5 控件学习(一个一个学习之QCheckBox)

QCheckBox继承图: QCheckBox描述: 一般是方框图标,多选操作! QCheckBox继承: 它继承自 QAbstarctButton QCheckBox功能作用: from PyQt5.Qt import * #刚开始学习可以这样一下导入 import sys #1,创建app app = QApplication(sys.argv) #2,控件的操作: #创建控件 window = QWidget() #设置控件 window.setWindowTitle("QCheckBox

PyQt5 控件学习(一个一个学习之QPlainTextEdit)

QPlainTextEdit继承图 : QPlainTextEdit描述 : 它和QTextEdit 差不多(但是它不是继承QTextEdit),但是它更适合大的文本!  具体差异看上面! QTextEdit 是按照像素来滚动的,而QPlainTextEdit 是按照行来滚的, 证明如下: from PyQt5.Qt import * #刚开始学习可以这样一下导入 import sys class Window(QWidget): def __init__(self): super().__in

PyQt5 控件学习(一个一个学习之QKeySequenceEdit)

QKeySequenceEdit 的继承图 : QKeySequenceEdit 的描述 : QKeySequenceEdit 的继承 : 它是继承自QWidget  的 from PyQt5.Qt import * #刚开始学习可以这样一下导入 import sys class Window(QWidget): def __init__(self): super().__init__() self.setWindowTitle("QKeySequenceEdit 控件的学习") se

PyQt5 控件学习(一个一个学习之QScrollBar)

QScrollBar 的继承图: QScrollBar 的描述: QScrollBar 的继承: 它继承与QAbstractSlider QScrollBar 的功能作用: from PyQt5.Qt import * #刚开始学习可以这样一下导入 import sys class Window(QWidget): def __init__(self): super().__init__() self.setWindowTitle("QScrollBar的学习") self.resiz