PyQt5如何自动滚屏阅读文本框中的内容

有个项目中,碰上了需要将操作文档自动在QTextBrowswer,QTextEdit,QPlainTextEdit显示区域内自动滚动阅读。读了相关的QTextEdit的文档。终于搞明白了。自记如下。

# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   Author:    Yuce citic banch hzbranch
   WeChat:    预测 2019-02-12,全国战疫,盼春天快到
-------------------------------------------------
"""
__author__ = 'YUCE'

# 0. 导入需要的包和模块
from PyQt5.Qt import *  # 主要包含了我们常用的一些类, 汇总到了一块
import sys

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("自动滚动提示通知的方法")
        self.resize(350, 400)
        self.setup_ui()

    def setup_ui(self):
        self.te = QTextEdit(self)  #本办法也适用于QTextBrowser,QPlainTextEdit
        #假设文本内容,实际可以用任何你需要的文本,暂时当作提示说明。
        self.te.setText("""《春》 作者:朱自清
    \n\n    盼望着,盼望着,东风来了,春天的脚步近了。
    一切都像刚睡醒的样子,欣欣然张开了眼。山朗润起来了,水涨起来了,太阳的脸红起来了。  小草偷偷地从土地里钻出来,嫩嫩的,绿绿的。园子里,田野里,瞧去,一大片一大片满是的。坐着,躺着,打两个滚,踢几脚球,赛几趟跑,捉几回迷藏。风轻悄悄的,草软绵绵的。
    桃树,杏树,梨树,你不让我,我不让你,都开满了花赶趟儿。红的像火,粉的像霞,白的像雪。花里带着甜味;闭了眼,树上仿佛已经满是桃儿,杏儿,梨儿。花下成千成百的蜜蜂嗡嗡的闹着,大小的蝴蝶飞来飞去。野花遍地是:杂样儿,有名字的,没名字的,散在草丛里像眼睛像星星,还眨呀眨的。
    “吹面不寒杨柳风”,不错的,像母亲的手抚摸着你,风里带着些新翻的泥土的气息,混着青草味儿,还有各种花的香,都在微微润湿的空气里酝酿。鸟儿将巢安在繁花嫩叶当中,高兴起来了,呼朋引伴的卖弄清脆的歌喉,唱出婉转的曲子,跟清风流水应和着。牛背上牧童的短笛,这时候也成天嘹亮的响着。
    雨是最寻常的,一下就是三两天。可别恼。看,像牛毛,像花针,像细丝,密密地斜织着,人家屋顶上全笼着一层薄烟。树叶却绿得发亮,小草也青得逼你的眼。傍晚时候,上灯了,一点点黄晕的光,烘托出一片安静而和平的夜。在乡下,小路上,石桥边,有撑着伞慢慢走着的人,地里还有工作的农民,披着蓑戴着笠。他们的房屋稀稀疏疏的,在雨里静默着。
    天上的风筝渐渐多了,地上的孩子也多了。城里乡下,家家户户,老老小小,也赶趟似的,一个个都出来了。舒活舒活筋骨,抖擞抖擞精神,各做各的一份事儿去。“一年之计在于春”,刚起头儿,有的是功夫,有的是希望。
    春天像刚落地的娃娃,从头到脚都是新的,它生长着。春天像小姑娘,花枝招展的,笑着走着。春天像健壮的青年,有铁一般的胳膊和腰脚,领着我们向前去。
    \n\n    盼望着,盼望着,东风来了,春天的脚步近了。
    一切都像刚睡醒的样子,欣欣然张开了眼。山朗润起来了,水涨起来了,太阳的脸红起来了。  小草偷偷地从土地里钻出来,嫩嫩的,绿绿的。园子里,田野里,瞧去,一大片一大片满是的。坐着,躺着,打两个滚,踢几脚球,赛几趟跑,捉几回迷藏。风轻悄悄的,草软绵绵的。
    桃树,杏树,梨树,你不让我,我不让你,都开满了花赶趟儿。红的像火,粉的像霞,白的像雪。花里带着甜味;闭了眼,树上仿佛已经满是桃儿,杏儿,梨儿。花下成千成百的蜜蜂嗡嗡的闹着,大小的蝴蝶飞来飞去。野花遍地是:杂样儿,有名字的,没名字的,散在草丛里像眼睛像星星,还眨呀眨的。
    “吹面不寒杨柳风”,不错的,像母亲的手抚摸着你,风里带着些新翻的泥土的气息,混着青草味儿,还有各种花的香,都在微微润湿的空气里酝酿。鸟儿将巢安在繁花嫩叶当中,高兴起来了,呼朋引伴的卖弄清脆的歌喉,唱出婉转的曲子,跟清风流水应和着。牛背上牧童的短笛,这时候也成天嘹亮的响着。
    雨是最寻常的,一下就是三两天。可别恼。看,像牛毛,像花针,像细丝,密密地斜织着,人家屋顶上全笼着一层薄烟。树叶却绿得发亮,小草也青得逼你的眼。傍晚时候,上灯了,一点点黄晕的光,烘托出一片安静而和平的夜。在乡下,小路上,石桥边,有撑着伞慢慢走着的人,地里还有工作的农民,披着蓑戴着笠。他们的房屋稀稀疏疏的,在雨里静默着。
    天上的风筝渐渐多了,地上的孩子也多了。城里乡下,家家户户,老老小小,也赶趟似的,一个个都出来了。舒活舒活筋骨,抖擞抖擞精神,各做各的一份事儿去。“一年之计在于春”,刚起头儿,有的是功夫,有的是希望。
    春天像刚落地的娃娃,从头到脚都是新的,它生长着。春天像小姑娘,花枝招展的,笑着走着。春天像健壮的青年,有铁一般的胳膊和腰脚,领着我们向前去。""")
        self.te.move(30, 30)
        self.te.resize(300,300)
        #self.te.setReadOnly(True)   #把光标隐去,不加就显示光标移动
        self.btn = QPushButton(self)
        self.btn.setText("停止自动阅读")
        self.btn.setStyleSheet("background-color: yellow;")
        self.btn.move(100,350)

        self.btn.clicked.connect(self.stop_auto)  #定义槽函数 stop_auto()
        self.MystartTimer()

    def stop_auto(self):    #停止自动滚动显示
        if self.timer_id_cnt != 0:
            self.killTimer(self.timer_id_autodisp)
 
    def MystartTimer(self):   #自定义的定时器
        self.timer_id_autodisp=self.startTimer(1000)   #开启一个每秒定时器
        self.timer_id_cnt=60   #定时器运行次数
        self.cursor = self.te.textCursor()
        self.te.moveCursor(self.cursor.Start)

    def timerEvent(self, *args, **kwargs):  #定时任务的动作方法
        self.te.moveCursor(self.cursor.Down)   #te的文本光标朝下走一行,另一个方式是操作Mouse滚动条
        QApplication.processEvents()
        self.timer_id_cnt -= 1
        if self.timer_id_cnt == 0:
            self.killTimer(self.timer_id_autodisp)

if __name__ == '__main__':
    # 1. 创建一个应用程序对象
    app = QApplication(sys.argv)
    window = MainWindow()    #QWidget()  改成从自定义类(也是QWidget类)
    window.show()
    sys.exit(app.exec_())

效果如下:
PyQt5如何自动滚屏阅读文本框中的内容_第1张图片

你可能感兴趣的:(PyQt5如何自动滚屏阅读文本框中的内容)