QSlider滑块

QSlider简介

QSlider小部件提供了一个垂直或水平滑块。

滑块是控制有界值的经典控件。它允许用户沿水平或垂直凹槽移动滑块手柄,并将手柄的位置转换为合法范围内的整数值。

QSlider拥有很少的功能,大部分的功能都在QAbstractSlider中。最有用的函数是setValue()将滑块直接设置为某个值; triggerAction()模拟点击的效果(对快捷键有用); setSingleStep(),setPageStep()设置步骤;以及setMinimum()和setMaximum()来定义滚动条的范围。

QSlider继承了一套全面的信号:

QSlider只提供整数范围。请注意,虽然QSlider处理的数量非常大,但用户很难准确地在很大范围内使用滑块。

一个滑块接受对Tab的焦点,并提供鼠标滚轮和键盘界面。键盘接口如下:

  • Left/Right 移动水平滑块一个步长
  • Up/Down 移动垂直滑块一个步长
  • PageUp 上移一页
  • PageDown 下移一页
  • Home 移动至起始位置(最小值)
  • End 移动至结束位置(最大值)

详见:QSlider Class | Qt Widgets 5.9

效果如下:

参考:

https://zhuanlan.zhihu.com/p/30860668

完整代码:

  1. from PyQt5.QtWidgets import (QApplication,QWidget,QSlider,QLabel,QGridLayout)
  2. from PyQt5.QtCore import Qt
  3. from PyQt5.QtGui import QPixmap
  4. import sys
  5.  
  6. class Example(QWidget):
  7. def __init__(self):
  8. super(Example, self).__init__()
  9. self.initUI()
  10.  
  11. def initUI(self):
  12. self.setGeometry(300,300,700,300)
  13. self.setWindowTitle("QSlider滑块")
  14. gridLayout = QGridLayout()
  15. self.lb1 = QLabel("滑块1当前值:",self)
  16. self.lb2 = QLabel(self)
  17. self.lb2.setPixmap(QPixmap('01.jpg'))
  18. self.lb3 = QLabel("滑块2当前值:",self)
  19. self.sld1 = QSlider(Qt.Horizontal,self)
  20. self.sld2 = QSlider(Qt.Horizontal,self)
  21. self.sld1.setMinimum(0)
  22. self.sld1.setMaximum(99)
  23. self.sld1.setTickPosition(QSlider.TicksLeft)
  24. self.sld2.setMinimum(0)
  25. self.sld2.setMaximum(99)
  26. gridLayout.addWidget(self.lb1,0,0,1,1)
  27. gridLayout.addWidget(self.sld1,0,1,1,1)
  28. gridLayout.addWidget(self.lb2,1,0,1,4)
  29. gridLayout.addWidget(self.sld2,2,1,1,1)
  30. gridLayout.addWidget(self.lb3, 2,0,1,1)
  31. self.setLayout(gridLayout)
  32.  
  33. self.sld1.valueChanged[int].connect(self.changeVal)
  34. self.sld2.valueChanged[int].connect(self.changeVal)
  35.  
  36. def changeVal(self, value):
  37. sender = self.sender()
  38. if sender == self.sld1:
  39. self.sld2.setValue(value)
  40. else:
  41. self.sld1.setValue(value)
  42. self.lb1.setText('滑动块1当前值:' + str(value))
  43. self.lb3.setText('滑动块2当前值:' + str(value))
  44. if value == 0:
  45. self.lb2.setPixmap(QPixmap('QSlider/01.jpg'))
  46. elif value > 0 and value <= 30:
  47. self.lb2.setPixmap(QPixmap('QSlider/02.jpg'))
  48. elif value > 30 and value < 80:
  49. self.lb2.setPixmap(QPixmap('QSlider/03.jpg'))
  50. else:
  51. self.lb2.setPixmap(QPixmap('QSlider/04.jpg'))
  52.  
  53. if __name__ == '__main__':
  54. app = QApplication(sys.argv)
  55. ex = Example()
  56. ex.show()
  57. sys.exit(app.exec_())

QSlider滑块案例

在我们的例子中,我们通过拖动滑块,更改标签上的图像,给人以小汽车好像在前进的感觉。

  1. self.sld1 = QSlider(Qt.Vertical,self)
  2. self.sld2 = QSlider(Qt.Horizontal,self)

这里我们创建一个水平和垂直的QSlider对象。

  1. self.sld1.setGeometry(30,40,30,100)
  2. self.sld1.setMinimum(0)
  3. self.sld1.setMaximum(99)

这里我们指定了滑块1的大小和位置,同时设置了其能表示的最小值(0)和最大值(99)

  1. self.sld1.setTickPosition(QSlider.TicksLeft)

这里我们给滑块1设定了一个标记位置,需要注意的是滑块2我们没有设定标记位置,这样才能更好的区别。默认是没有标记位置显示的。如下图:

这个刻度线相对于滑块和用户操作的位置,它有以下几种样式:

  1. self.sld1.valueChanged[int].connect(self.changevalue)
  2. self.sld2.valueChanged[int].connect(self.changevalue)

我们将valueChanged信号连接到用户定义的changevalue()方法。

  1. self.label1 = QLabel(self)
  2. self.label1.setPixmap(QPixmap('01.jpg'))
  3. self.label1.setGeometry(80,150,600,180)

我们创建一个QLabel小部件并为其设置一个初始静态图像。

  1. def changevalue(self,value):
  2. sender = self.sender()
  3. if sender == self.sld1:
  4. self.sld2.setValue(value)
  5. else:
  6. self.sld1.setValue(value)
  7. self.label2.setText('滑动块1当前值:'+str(value))
  8. self.label3.setText('滑动块2当前值:'+str(value))
  9. if value == 0:
  10. self.label1.setPixmap(QPixmap('01.jpg'))
  11. elif value > 0 and value <= 30:
  12. self.label1.setPixmap(QPixmap('02.jpg'))
  13. elif value > 30 and value < 80:
  14. self.label1.setPixmap(QPixmap('03.jpg'))
  15. else:
  16. self.label1.setPixmap(QPixmap('04.jpg'))

为了实现两个滑块的联动,所以我们判断拖动了哪个滑块,然后设置另一个滑块的值,这样就实现两个滑块的联动了。如下图:

滑块拖动的同时我们会实时显示当前的滑块值。

根据滑块的值,我们将图像设置为标签。 在上面的代码中,如果滑块等于0,我们将01.JPG图像设置为标签。

参考:学点编程吧出品/https://zhuanlan.zhihu.com/xdbcb8

代码下载:链接: https://pan.baidu.com/s/12resGLhGpyT5MIt3M_J05A 提取码: yes2

【PyQt5-Qt Designer】QSlider滑块的更多相关文章

  1. PyQt5 & Qt Designer使用小结

    开始在知乎写文章的原因,主要还是想整理平时的经验,方便自己以后查看,有机会的话大家也可以交流吧. 11月中旬由于项目需要,和另一名实习生负责使用Python开发一个数据分析的小软件. 虽然才开始接触Q ...

  2. PyCharm+PyQt5+Qt Designer配置

    配置前提 因为本机已经配置完毕了,本次使用的是虚拟机中的Win7系统,Win10系统操作步骤完全一样,无任何区别 PyCharm (这个不多说,官网下载安装,我是用的是2019.3版本) Python ...

  3. 痞子衡嵌入式:超级好用的可视化PyQt GUI构建工具(Qt Designer)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是PyQt GUI构建工具Qt Designer. 痞子衡开博客至今已有好几年,一直以嵌入式开发相关主题的文章为主线,偶尔穿插一些其他技术 ...

  4. PyCharm+Qt Designer+PyUIC安装配置教程

    Qt Designer用于像VC++的MFC一样拖放.设计控件 PyUIC用于将Qt Designer生成的.ui文件转换成.py文件 Qt Designer和PyUIC都包含在PyQt5中,所以我们 ...

  5. pyqt5 在qt designer后以弹窗的方式连接多个UI图形界面

    当我们通过pyqt开发时,eric6为我们提供了一个方便的工具:图形化的绘制UI工具--qt designer. 我们可以通过它开发多个UI,然后利用信号-槽工具,将功能代码附着在上面.也可以将多个界 ...

  6. PyQt5(1)——Qt Designer初探

    相关环境配置我们就不介绍了(网上有很多教程) Qt Designer 是一款十分强大的GUI工具,生成的文件为 .UI文件  可以通过命令转化为Py文件,简单来说我们可以通过拖拽方式生成界面,在通过简 ...

  7. Win10安装PyQt5与Qt Designer【转】

    https://blog.csdn.net/u011342224/article/details/78879633 1.直接在cmd中通过pip安装PyQt5 1 pip install pyqt5 ...

  8. Win10安装PyQt5与Qt Designer

    1.直接在cmd中通过pip安装PyQt5 1 pip install pyqt5 会自动下载PyQt5以及sip并安装,因为PyQt5不再提供Qt Designer等工具,所以需要再安装pyqt5- ...

  9. pyqt5对用qt designer设计的窗体实现弹出子窗口的示例

    pyqt5对用qt designer设计的窗体实现弹出子窗口的示例 脚本专栏 python 1. 用qt designer编写主窗体,窗体类型是MainWindow,空白窗口上一个按钮.并转换成mai ...

随机推荐

  1. Threads vs. Tasks

    Posted on Friday, October 11, 2013 .Net has three low-level mechanisms to run code in parallel: Thre ...

  2. 牛客网_Go语言相关练习_判断&选择题(5)

    一.判断题 defer应该在if后面,如果文件为空,close会崩溃. package main import ( "os" "fmt" ) func main ...

  3. (原)关于获取ffmpeg解析rtsp流sdp中带有sps,pps的情况

     转载请注明出处:http://www.cnblogs.com/lihaiping/p/6612511.html 今天同事准备在android下使用ffmpeg来获取rtsp流,问我如何获取获取sps ...

  4. SpringBatch的流程简介

    SpringBatch的流程图如下: 每个Batch都会包含一个Job.Job就像一个容器,这个容器装了若干Step,Batch中实际干活的也就是这些Step,至于Step干什么活,无外乎读取数据,处 ...

  5. jquery-ui弹框登录前端写法

    新建一个div: <div class="container" id="loginForm" hidden> <h4 class=" ...

  6. WP8.1学习系列(第二十七章)——ListView和GridView入门

    快速入门:添加 ListView 和 GridView 控件 (XAML)   在本文中 先决条件 选择 ListView 或 GridView 将项添加到项集合 设置项目源 指定项目的外观 指定视图 ...

  7. 【class2src】Decompiler

    方法源自:https://stackoverflow.com/questions/272535/how-do-i-decompile-java-class-files 功能:给定一个.class文件, ...

  8. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验四:按键模块③ — 单击与双击

    实验四:按键模块③ - 单击与双击 实验三我们创建了"点击"还有"长点击"等有效按键的多功能按键模块.在此,实验四同样也是创建多功能按键模块,不过却有不同的有效 ...

  9. NHibernate中的API

    本篇文章介绍的是NHibernate的各种API及其作用. 下图描述了NHibernate的API在分层架构中的作用,下面将进行详细说明. NHibernate的接口大致分为四类:1.  被应用程序调 ...

  10. 【openstack N版】——网络服务neutron(flat扁平网络)

    一.openstack网络服务neutron 1.1neutron介绍 neutron是openstack重要组件之一,在以前是时候没有neutron项目,早期的时候是没有neutron,早期所使用的 ...