pyqt 滚动条

举报
风吹稻花香 发表于 2021/06/04 23:41:51 2021/06/04
【摘要】   QScrollBar简介 QScrollbar滚动条控件和QSlider的行为相似,它们都继承自QAbstractSlider, 都是提供在一定范围内数值变化的交互控件,但它们的外观表现不一样,QSlider用于控制时间变化,比如播放器,有一定时长,用QSlider就非常贴切。QScrollbar常用于空间位置的变化,比如,一幅大的图像,在屏幕上只能显示其中...

 

QScrollBar简介

QScrollbar滚动条控件和QSlider的行为相似,它们都继承自QAbstractSlider, 都是提供在一定范围内数值变化的交互控件,但它们的外观表现不一样,QSlider用于控制时间变化,比如播放器,有一定时长,用QSlider就非常贴切。QScrollbar常用于空间位置的变化,比如,一幅大的图像,在屏幕上只能显示其中一部分,就可以使用滚动条来控制。

和QSlider类似,QScrollbar提供垂直方向和水平方向的滚动条。

QScrollbar常用方法:

  • setMinimum(): 设置滚动条的最小值
  • setMaximum(): 设置滚动条的最大值
  • setSingleStep(): 设置滚动条的步长
  • setValue(): 设置滚动条的值
  • value(): 获得滚动条控件的值

QScrollbar中的常用信号:

  • valueChanged: 当滑块的值发生改变时发射此信号,此信号是最常用的
  • sliderPressed: 当用户按下滑块时发射此信号
  • sliderMoved: 当用户拖动滑块时发射此信号
  • sliderReleased: 当用户释放滑块时发射此信号

QScrollbar类继承关系:

c1b7e07c9d36c71a243e7f7478e44b26.png

测试QScrollbar

创建文件qscroolbar.py, 代码如下:


  
  1. import sys
  2. import os
  3. from PyQt5 import QtCore, QtGui,QtWidgets
  4. from PyQt5.QtCore import Qt
  5. from PyQt5.QtGui import QPixmap
  6. from PyQt5.QtWidgets import (QApplication, QWidget, QLabel, QScrollBar,QSpacerItem, QSizePolicy, QVBoxLayout, QHBoxLayout, QFormLayout)
  7. class DemoScrollBar(QWidget):
  8. def __init__(self, parent=None):
  9. super(DemoScrollBar, self).__init__(parent)
  10. self.setWindowTitle("实战PyQt5: QScrollBar Demo!")
  11. self.resize(440, 300)
  12. self.disp_w = 400
  13. self.disp_h = 280
  14. self.pos_horz = 0
  15. self.pos_vert = 0
  16. self.pix = QPixmap("d:/1.jpg")
  17. # self.pix = QPixmap(os.path.dirname(__file__) + "d:/1.jpg")
  18. img_w = self.pix.width()
  19. img_h = self.pix.height()
  20. self.disp_img = QLabel(self)
  21. self.disp_img.setFixedSize(self.disp_w, self.disp_h)
  22. vBar = QScrollBar(Qt.Vertical, self)
  23. vBar.setRange(0, img_h - self.disp_h)
  24. vBar.valueChanged.connect(self.vertPosChanged)
  25. hBar = QScrollBar(Qt.Horizontal, self)
  26. hBar.setRange(0, img_w - self.disp_w)
  27. hBar.setFixedWidth(self.disp_w)
  28. hBar.valueChanged.connect(self.horzPosChanged)
  29. fLayout = QFormLayout(self)
  30. fLayout.setWidget(0, QFormLayout.LabelRole, self.disp_img)
  31. fLayout.setWidget(0, QFormLayout.FieldRole, vBar)
  32. fLayout.setWidget(1, QFormLayout.LabelRole, hBar) #初始化显示区域
  33. self.disp_img.setPixmap(self.pix.copy(self.pos_horz, self.pos_vert, self.disp_w, self.disp_h))
  34. self.setLayout(fLayout)
  35. def horzPosChanged(self, pos):
  36. print(pos)
  37. self.pos_horz = pos
  38. self.disp_img.setPixmap(self.pix.copy(self.pos_horz, self.pos_vert, self.disp_w, self.disp_h))
  39. def vertPosChanged(self, pos):
  40. print(pos)
  41. self.pos_vert = pos
  42. self.disp_img.setPixmap(self.pix.copy(self.pos_horz, self.pos_vert, self.disp_w, self.disp_h))
  43. if __name__ == '__main__':
  44. app = QApplication(sys.argv)
  45. window = DemoScrollBar()
  46. window.show()
  47. sys.exit(app.exec())

 

文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/113697485

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。