import sys
from PySide2.QtWidgets import *
from PySide2.QtGui import QFont
from PySide2 import QtCore font = QFont()
font.setPointSize(20) class NewButton(QPushButton):
def __init__(self, *args):
super().__init__(*args)
self.setFont(font) class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent) self.v1 = QVBoxLayout()
self.v2 = QVBoxLayout() self.v2.b1 = NewButton("按钮1")
self.v2.b2 = NewButton("按钮2")
self.v2.b1.clicked.connect(self.additem)
self.v2.addWidget(self.v2.b1)
self.v2.addWidget(self.v2.b2)
self.additem()
w = QWidget()
w.setLayout(self.v1)
area = QScrollArea()
area.setWidget(w)
# area.setLayout(self.v1)
area.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
# area.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
area.setWidgetResizable(True) layout = QHBoxLayout()
layout.addWidget(area)
# layout.addLayout(self.v1)
layout.addLayout(self.v2) self.setLayout(layout) def additem(self):
self.v1.addWidget(NewButton("新的按钮")) if __name__ == '__main__':
app = QApplication(sys.argv)
form = Form()
form.show()
sys.exit(app.exec_())

思路说明

QScrollArea 只要简单设置就能有滚动条 QScrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)

PS,水平方向有相似的方法,后面的参数不能是bool值,只能是QtCore.Qt.ScrollBarAlwaysOn或者QtCore.Qt.ScrollBarAlwaysOff

但是QScrollArea 不能和Layout一样addWidget或addLayout。QScrollArea实质还是Widget,只能setWidget或setLayout “挂载”上一个其他东西。

但实际测试发现,还有一个十分重要的设置QScrollArea.setWidgetResizable(True)必须有,所以代码是一个QScrollArea先setWidget一个Widget然后Widget再setLayout上QVBoxLayout

我的视频里面有实际的效果演示

https://www.bilibili.com/video/BV13u411v7hp



最新文章

  1. POJ3967Ideal Path[反向bfs 层次图]
  2. POJ 1279 Art Gallery(半平面交)
  3. python脚本实现集群检测和管理
  4. 使用MinGW 编译 iconv 库
  5. 咏南C/S开发框架支持最新的DELPHI XE8开发
  6. Jquery datatables 重载数据方法
  7. AlarmManager.setRepeating将不再准确
  8. 视差滚动(Parallax Scrolling)效果的原理与实现
  9. Shell脚本编程具体解释
  10. list和用vector区别(Vector相当于是数组,读写快,插入慢)
  11. ios12版本以上键盘唤起后,收回页面不回滚问题
  12. java之网络爬虫介绍
  13. Confluence 6 在编辑器中控制参数的显示
  14. ssm 整合(方案二 maven)
  15. JAVA中初始化ArrayList的三种方式
  16. java List.subList方法中的超级大陷阱
  17. python全栈开发day28-网络编程之粘包、解决粘包,上传和下载的作业
  18. 使用Java语言递归删除目录下面产生的临时文件
  19. 浅谈Java中的==和equals
  20. java知识回顾

热门文章

  1. 学习Java Day27
  2. 大规模 IoT 边缘容器集群管理的几种架构-0-边缘容器及架构简介
  3. tomcat7 与 tomcat8 加载 jar包的顺序
  4. ctf 菜鸟杯
  5. Word 文本转换为表格
  6. 昇腾AI新技能,还能预防猪生病?
  7. Angular ngx-translate 国际化实践(中文转英文)
  8. 原创如何给MDK5.37添加Arm Compiler 5
  9. 【最新最新】mac pro 安装扩展imagick 最新总结
  10. Occlusion(遮挡剔除)