博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
七、PyQT5控件——QSlider,QSpinBox
阅读量:6007 次
发布时间:2019-06-20

本文共 3556 字,大约阅读时间需要 11 分钟。

一、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

你可能感兴趣的文章
我的友情链接
查看>>
个人总结问卷调查,头脑风暴,焦点小组的区别
查看>>
linux网络配置
查看>>
概括的描述一下Spring注册流程
查看>>
了解swagger
查看>>
EasyUI扩展组件、自定义组件
查看>>
java ssm 后台框架平台 项目源码 websocket 即时通讯 IM quartz springmvc
查看>>
20155229《网络对抗技术》Exp5:MSF基础应用
查看>>
[cocos-quick]在layer函数调用UIFile文件报错问题
查看>>
WPF中DataGrid双击命令获取选中的ViewModel
查看>>
ASP.NET MVC 随手记
查看>>
勤于思考:从客户端中检测到有潜在危险的 Request.Form 值
查看>>
交换机端口模式
查看>>
【笔记】cookies管理工具类
查看>>
mysql创建应用账号
查看>>
内存四区模型
查看>>
poj 3608:Bridge Across Islands
查看>>
跟JBPM学设计模式之建造者模式
查看>>
python3之tcp
查看>>
计算两个日期之间的天数
查看>>