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, 代码如下:


      import sys
      import os
      from PyQt5 import QtCore, QtGui,QtWidgets
      from PyQt5.QtCore import Qt
      from PyQt5.QtGui import QPixmap
      from PyQt5.QtWidgets import (QApplication, QWidget, QLabel, QScrollBar,QSpacerItem, QSizePolicy, QVBoxLayout, QHBoxLayout, QFormLayout)
      class DemoScrollBar(QWidget):
      def __init__(self, parent=None):
       super(DemoScrollBar, self).__init__(parent)
       self.setWindowTitle("实战PyQt5: QScrollBar Demo!")
       self.resize(440, 300)
       self.disp_w = 400
       self.disp_h = 280
       self.pos_horz = 0
       self.pos_vert = 0
       self.pix = QPixmap("d:/1.jpg")
      # self.pix = QPixmap(os.path.dirname(__file__) + "d:/1.jpg")
       img_w = self.pix.width()
       img_h = self.pix.height()
       self.disp_img = QLabel(self)
       self.disp_img.setFixedSize(self.disp_w, self.disp_h)
       vBar = QScrollBar(Qt.Vertical, self)
       vBar.setRange(0, img_h - self.disp_h)
       vBar.valueChanged.connect(self.vertPosChanged)
       hBar = QScrollBar(Qt.Horizontal, self)
       hBar.setRange(0, img_w - self.disp_w)
       hBar.setFixedWidth(self.disp_w)
       hBar.valueChanged.connect(self.horzPosChanged)
       fLayout = QFormLayout(self)
       fLayout.setWidget(0, QFormLayout.LabelRole, self.disp_img)
       fLayout.setWidget(0, QFormLayout.FieldRole, vBar)
       fLayout.setWidget(1, QFormLayout.LabelRole, hBar) #初始化显示区域
       self.disp_img.setPixmap(self.pix.copy(self.pos_horz, self.pos_vert, self.disp_w, self.disp_h))
       self.setLayout(fLayout)
      def horzPosChanged(self, pos):
       print(pos)
       self.pos_horz = pos
       self.disp_img.setPixmap(self.pix.copy(self.pos_horz,  self.pos_vert, self.disp_w, self.disp_h))
      def vertPosChanged(self, pos):
       print(pos)
       self.pos_vert = pos
       self.disp_img.setPixmap(self.pix.copy(self.pos_horz,  self.pos_vert, self.disp_w, self.disp_h))
      if __name__ == '__main__':
       app = QApplication(sys.argv)
       window = DemoScrollBar()
       window.show()
       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个月内不可修改。