pyqt5加滚动条

pyqt5加滚动条

这个问题真的困扰我好久。自己用pyqt画的一张图,但是由于画得太大GUI显示不出来,需要加一个滚动条辅助观看。在我查阅了众多大佬的博客之后,解决了这个问题。记录一下自己的解决过程。
首先,我的图长这样:
在这里插入图片描述
由于有点涉及其他不方便透露东西,我只能先马赛克一下
要加滚动条,首先要弄明白滚动条的组成:
在这里插入图片描述
网上有很多大佬做的demo是QButton和QLabel加滚动条,但是我的需求是要把我画图的界面QWeight加滚动条,所以我们直接换一下,如下图。
在这里插入图片描述
虽然看起来有点怪怪的,但事实确实是这样。
在需要的class里面加入下面代码(加在init函数里面):

w = QWidget()
self.setCentralWidget(w)
self.topFiller = Three()
self.topFiller.setMinimumSize(400, 500)  # 设置滚动条的尺寸
self.scroll = QScrollArea()
self.scroll.setWidget(self.topFiller)
self.vbox = QVBoxLayout()
self.vbox.addWidget(self.scroll)
w.setLayout(self.vbox)
self.statusBar().showMessage("demo")#底部信息栏

关系图:
在这里插入图片描述
这个Three()是我自己写的一个继承了Qweight的class,用的时候记得替换它。

那就记录到这里吧!

### PyQt5 中使用 QScrollArea 和 QVBoxLayout 实现滚动条布局 为了在 PyQt5 应用程序中创建带有滚动功能的界面,可以组合 `QScrollArea` 和 `QVBoxLayout` 来管理子部件及其排列方式。下面是一个具体的例子说明如何设置这些组件以便它们能够正常工作并显示滚动条。 首先定义一个主窗口类继承自 `QWidget` 或者其他合适的基类,在构造函数里初始化 `QScrollArea` 并将其几何位置设定好: ```python from PyQt5 import QtWidgets, QtCore class ScrollableWindow(QtWidgets.QWidget): def __init__(parent=None): super().__init__(parent) # 创建 QScrollArea 对象,并调整其尺寸 scroll_area = QtWidgets.QScrollArea() scroll_area.setGeometry(QtCore.QRect(50, 100, 600, 500))[^1] # 设置内容小部件 (content widget),它会作为可滚动的内容载体 content_widget = QtWidgets.QWidget(scroll_area) # 使用 QVBoxLayout 布局管理器来安排内部的小部件们 layout = QtWidgets.QVBoxLayout(content_widget)[^1] ``` 接着向这个垂直布局里面添多个标签或其他类型的控件实例,模拟大量数据项的情况;当数量超过一定限度时就会触发自动出现竖直方向上的滚动条: ```python for i in range(20): # 这里的循环次数可以根据实际需求更改 label = QtWidgets.QLabel(f'Item {i}', content_widget) layout.addWidget(label) ``` 最后一步是把之前准备好的内容小部件指派给 `QScrollArea` 的 `setWidget()` 方法,并确保该区域内的水平滚动条被禁用了(如果不需要的话),这样就完成了整个结构搭建过程: ```python scroll_area.setWidgetResizable(True) # 让 QScrollArea 自适应内容大小变化 scroll_area.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) # 隐藏水平滚动条[^3] scroll_area.setWidget(content_widget) # 将内容小部件放入到 QScrollArea 中去 main_layout = QtWidgets.QHBoxLayout(parent) # 主窗体采用水平布局容纳 QScrollArea main_layout.addWidget(scroll_area) ``` 通过上述代码片段展示了一个完整的流程图景——从创建必要的对象直到最终组装成具有滚动特性的用户界面部分。值得注意的是,这里只展示了核心逻辑的一部分,具体应用还需要考虑更多细节因素比如样式表定制等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值