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