pyqt5 长文本滚动展示
在写qt版的客户端时, 需要开发一个公告的功能, 公告内容过长需要滚动显示
尝试了许多方式, 优化了一下还是可以的, 这里写几个demo记录一下
使用的开发语言和技术
Python3 + PyQt5
- 这是一个直接显示的弹窗公告
直接复制下来, 保存并运行
# coding=utf-8
import sys
from PyQt5.QtCore import QSize, Qt
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QPushButton, QScrollArea, QHBoxLayout
class TestWidget(QWidget):
def __init__(self, parent=None):
super(TestWidget, self).__init__(parent)
self.notice_info = "这里填充你的公告内容"
self.initUI()
def initUI(self):
self.resize(QSize(500, 400))
self.move(400, 300) # 移动窗口
self.setStyleSheet("background-color: white;")
# self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint | Qt.Tool)
# 将控件填入布局中
self.mainVLayout = QVBoxLayout(self)
self.mainVLayout.setContentsMargins(0, 0, 0, 0)
self.mainVLayout.setSpacing(0)
# 公告标题
self.notice_title = QLabel()
self.notice_title.setMaximumWidth(500)
self.notice_title.setMinimumWidth(500)
self.notice_title.setAlignment(Qt.AlignCenter)
self.notice_title.setStyleSheet("font:63 11pt 微软雅黑;color:rgb(0,0,0); margin:10px 0px 5px;")
self.notice_title.setText("放假通知") # 公告标题
# 公告内容
self.notice_text = QLabel()
self.notice_text.setWordWrap(True)
self.notice_text.setAlignment(Qt.AlignLeft | Qt.AlignTop)
self.notice_text.setFont(QFont('Mcorsoft YaHei', 11, 50))
self.notice_text.setStyleSheet("color:rgb(130,130,130); padding:10px;")
self.notice_text.setMinimumSize(QSize(500, 200))
'''
这里需要注意
长文本的内容需要先写入控件中再展示
才能根据文本长度适应控件的高度
当 self.notice_text 的高度大于 self.scrollare的高度时才显示滚动
想要动态变化数据内容, 只能将 self.notice_text
设置一