pyqt5 qscrollarea到达_pyqt5 QScrollArea设置在自定义侧(任何位置)
本例设置为垂直左侧scroll
主要思想是利用一个长度为0的mid_frame,高度为待设置qwidget的高度,用mid_frame的moveEvent事件驱动qwidget的move
我项目的效果图:
代码及注释
from PyQt5.Qt import *
from sys import argv
# 主窗口
class Main(QMainWindow):
def __init__(self):
super().__init__(None)
self.setGeometry(500, 500, 500, 500)
# 实例化
self.main = MainFrame(self)
self.scroll = ScrollFrame(self, self.main, 40)
self.show()
def resizeEvent(self, e):
# resize改变scroll窗口的高度使其与自己相同
self.scroll.resize(self.scroll.width(), self.height())
#需要配备scroll的窗口
class MainFrame(QFrame):
def __init__(self, father):
super().__init__(father)
self.father = father
self.setGeometry(50, 50, 100, 1500)
# 测试按钮
for i in range(15):
b = QPushButton(str(i), self)
b.setGeometry(0, i*100, 100, 100)
# 自定义滚轮事件
def wheelEvent(self, e):
if e.angleDelta().y() > 0:
self.move(self.x(), self.y() + 60)
else:
self.move(self.x(), self.y() - 60)
# 改变scroll的值
self.father.scroll.bar.setValue(abs(self.y()))
def resizeEvent(self, e):
# resize改变mid_frame的高度使其与自己相同
self.father.scroll.mid_frame.setGeometry(0, 0, 0, self.height())
# 承载scrollarea的窗口
class ScrollFrame(QFrame):
def __init__(self, father, parent, pos_x):
super().__init__(father)
self.parent_, self.father, self.pox_x = parent, father, pos_x
self.mid_frame = MidFrame(self)
self.mid_frame.setGeometry(0, 0, 0, self.parent_.height())
self.scroll = QScrollArea()
# 实例化verticalbar以供改变scroll的值
self.bar = self.scroll.verticalScrollBar()
# 绑定中间窗口
self.scroll.setWidget(self.mid_frame)
# 自动隐藏和出现
self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
# 加入到承载frame
layout = QGridLayout(self)
layout.addWidget(self.scroll, 0, 0)
self.setLayout(layout)
# 设置承载fram的size和scrollarea一样
self.setGeometry(pos_x, 0, 20, self.father.height())
def resizeEvent(self, e):
# resize改变scroll的s高度使其与自己一样
self.scroll.setGeometry(0, 0, 20, self.height())
# 接受scroll事件的中间窗口
class MidFrame(QFrame):
def __init__(self, father):
super().__init__(father)
self.father = father
def moveEvent(self, e):
# move事件绑定实际滚动窗口的move
self.father.parent_.move(self.father.parent_.x(), e.pos().y())
app = QApplication(argv)
main = Main()
app.exec_()
本例效果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
时间: 2019-09-22
pyqt5 qscrollarea到达_pyqt5 QScrollArea设置在自定义侧(任何位置)相关推荐
- pyqt5 qscrollarea到达_PyQt5如何用QPainter在QScrollArea上画线?
你应该为重画的控件写一个新类,继承自 QWidget,并重写 paintEvent 方法. 参考 # -*- coding: utf-8 -*- import sys from PyQt5.QtWid ...
- R语言plotly可视化:可视化直方图、归一化的直方图、水平直方图、互相重叠的直方图、堆叠的直方图、累积直方图、通过bingroup参数设置多个直方图使用相同的bins设置、自定义直方图条形的间距
R语言plotly可视化:可视化直方图.归一化的直方图.水平直方图.互相重叠的直方图.堆叠的直方图.累积直方图.通过bingroup参数设置多个直方图使用相同的bins设置.自定义直方图条形的间距 目 ...
- echarts pie legend设置 (自定义文本)
legend: {orient: "vartical",x: "left",top: "center",left: "50%&qu ...
- iOS 设置字体 自定义字体
iOS 设置字体 自定义字体 分类: iOS2012-12-21 16:33 1062人阅读 评论(0) 收藏 举报 1.网上搜索字体文件(后缀名为.ttf,或.odf) 2.把字体库导入到工程的re ...
- creo自定义调用零件库_cero基础设置教程,五步cero5.0设置调用自定义标准件的方法...
cero基础设置教程,五步cero5.0设置调用自定义标准件的方法 cero是现今非常好用的结构设计软件,里面有很多设置方法和技巧,你知道library 里的标准件怎么才能被找到?下面为大家分享cer ...
- IntelliJ IDEA - 主题设置或自定义主题
IntelliJ IDEA - 主题设置 设置主题 自定义主题 提供4主题插件 提供4主题插件下载地址 设置主题 这里默认提供了三套主题:IntelliJ,Darcula,Windows.这里可以根据 ...
- android通知栏样式自定义,如何给状态栏上的时钟自定义样式或位置?(位置篇)
原标题:如何给状态栏上的时钟自定义样式或位置?(位置篇) 时间,是状态栏必不可少的空间之一.至于它的重要性和"电量"."信号"相比,哪个更重要.就由用户自行判断 ...
- 当前的安全设置不允许从该位置下载文件 解决方法
1. 打开浏览器--工具---internet-安全-自定义级别-选择到低到中低. 然后点受信任站点,把你要访问的站点添加进去 2. 设置Internet-->安全-->自定义级别 找到 ...
- BannerLayoutSimple 支持图片无限轮播的 BannerLayout,支持自定义小圆点位置以及显示位置等等,反正支持的挺多的,源码也有注释
BannerLayoutSimple 项目地址: 7449/BannerLayoutSimple 简介:支持图片无限轮播的 BannerLayout,支持自定义小圆点位置以及显示位置等等,反正支持的挺 ...
最新文章
- HDU 5996 dingyeye loves stone [阶梯Nim]
- urllib.error
- Golang关于channel死锁情况的汇总以及解决方案
- linux 下挂载光驱
- 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ..
- python,错误、调试和测试
- FileStream:The process cannot access the file because it is being used by another process
- 无法卸载和重装photoshop CS3 的解决办法
- Caffe框架的使用
- 使用JConsole观察分析Java程序的运行(转)
- 如何查看浏览器的DNS 缓存信息
- 机器学习梯度消失,梯度爆炸原因
- 团队合作开发常用git操作
- 1427: 数字转换
- 闲鱼平台API,item_app获得闲鱼原生数据
- Java实现龟兔赛跑
- 移动公网5G配置(一)
- 空间数据库Topic推荐-AMiner
- 【项目】用户可自定义简易宏键盘
- ApplePay对接java后台详细代码
热门文章
- java - 求a+aa+aaa+aa...a之和
- oracle去重保留一条_关于oracle数据库物理结构(文件)的一些总结
- python2.7 pyqt4创建qtapp_python-2.7 – 向TabWidget pyqt4添加加号按钮
- python函数手册中文_Python中文手册-Python函数
- tomcat 参数最佳实践_一线架构师开发总结:剖析并发编程+JVM性能,深入Tomcat与MySQL...
- django与grpc融合的过程
- Python测试开发django2.环境部署项目创建
- 【Python实战】chinesecalendar模块处理中国股市交易日期
- ping 不是内部或外部命令,也不是可运行的程序 或批处理文件。的解决办法
- 1.需要对txt存放的测试数据做去重处理,代码如下