pyqt 滚动条
【摘要】
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类继承关系:
测试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)