PyQt利用QScrollArea+QLabel制作一个滑动的长文本(QT Designer)

前言

想做一个弹窗去公告一些消息,但是普通的QLabel如果文本太长就会超出框框的范围,想要实现在固定范围内显示,可以滚动查看的效果,网上查了查参考了一些代码,想要通过QT Designer直接实现,过程如下

制作UI

  • ScrollArea

在这里插入图片描述

在画布上放一个ScrollArea,调整到想要的大小和位置

  • 调整scrollAreaWidgetContents

在这里插入图片描述

scrollAreaWidgetContents是ScrollArea的子物体,是一个widget,所有的滚动内容物都应该放在这个中间层上,其最大宽高就是最终能够滚动查看的范围,在设置完最大最小宽高后,就出现滚动条了

  • 禁用水平滚动条

在这里插入图片描述

这里我们只想要垂直方向的滚动条,在ScrollArea的熟悉里把horizontalScrollBarPolick禁用掉就好了

  • 文本

在这里插入图片描述

直接拖拽一个QLabel组件到scrollAreaWidgetContents上,先设置好宽度和滚动区域相同

  • 添加文本

在这里插入图片描述

给text内添加文本,可以看到上述的效果,并不是我们期望的,显示不全,而且

  • 设置自动换行和锚点

在这里插入图片描述

设置锚点文本靠左上,设置QLabel的WordWrap属性,超宽了会直接自动换行,很方便,但是因为QLabel的高不够,所以文本依然显示不全

  • 调整文本的高度

在这里插入图片描述

这里调整文本的高度,直到完全能够显示位置,但发现滚动区域太长了

  • 调整scrollAreaWidgetContents高度

在这里插入图片描述

根据文本高度调整滚动区域的高度

推送

  • Github
https://github.com/KingSun5

结语

若是觉得博主的文章写的不错,不妨关注一下博主,点赞一下博文,另博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。
本文属于原创文章,转载请著名作者出处并置顶!!

PyQt6中的`QScrollArea`是一个可以包含其他 widgets 的 widget,它提供了一个滚动条,以便用户在需要时可以滚动查看隐藏的部分。如果你希望在`QScrollArea`中显示最后一行,通常你需要确保滚动条滚动到可以显示最后一行的位置。 要实现这一功能,你可以在你的代码中使用`QScrollBar`类的方法。以下是一个简单的例子,展示了如何在添加内容到`QScrollArea`后,自动滚动到最后一行: ```python from PyQt6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QScrollArea, QLabel from PyQt6.QtCore import Qt class Example(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): # 创建一个垂直布局 layout = QVBoxLayout() # 创建一个滚动区域 scroll = QScrollArea() scroll.setWidgetResizable(True) # 使滚动区域内的窗口大小可调 # 创建一个用于滚动区域的容器widget container = QWidget() container.setLayout(layout) # 将容器设置为滚动区域的widget scroll.setWidget(container) # 将滚动区域添加到主窗口布局中 layout.addWidget(scroll) # 创建一些标签并添加到布局中 for i in range(10): label = QLabel(f'Label #{i}') layout.addWidget(label) # 滚动到最后一个标签 self.scrollToBottom(scroll) # 设置窗口和显示 self.setGeometry(300, 300, 350, 250) self.setWindowTitle('QScrollArea Example') self.show() def scrollToBottom(self, scrollArea): # 获取滚动区域的垂直滚动条 scrollbar = scrollArea.verticalScrollBar() # 将滚动条的值设置为最大值,滚动到底部 scrollbar.setValue(scrollbar.maximum()) if __name__ == '__main__': app = QApplication([]) ex = Example() app.exec() ``` 在这段代码中,`scrollToBottom`函数通过获取`QScrollArea`的`QScrollBar`实例,并将其值设置为最大值,从而使滚动条滚动到底部,从而显示最后一行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值