我想问一下如何在QTextEdit scoll中制作文本,以达到动画效果。动画效果应类似于视频所示:https://www.youtube.com/watch?v=MyeuGdXv4XM
使用PyQt,我想获得以下效果:文本应以2线/秒的速度自动向下倾斜,直到到达结尾并停止。
在下面的代码中,单击按钮后,文本将显示在QTextEdit-Widget中。文本很长,因此显示了滚动条。
我的问题:我不知道如何制作动画效果。因此,我想请您帮忙更正我的代码。
# -*- coding: utf-8 -*- from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * import sys import time list_longText = [" long text 1 - auto scrolling " * 1000, " long text 2 - auto scrolling " * 2000] class Worker(QObject): finished = pyqtSignal() strTxt = pyqtSignal(str) def __init__(self, parent=None): super(Worker, self).__init__(parent) @pyqtSlot() def onJob(self): for i in range(2): self.strTxt.emit(list_longText[i]) time.sleep(2) class MyApp(QWidget): def __init__(self): super(MyApp, self).__init__() self.setFixedSize(600, 400) self.setObjectName("window") self.initUI() def initUI(self): self.txt = QTextEdit("", self) self.btn = QPushButton("Button", self) self.btn.clicked.connect(self.start) self.layout = QHBoxLayout(self) self.layout.addWidget(self.txt) self.layout.addWidget(self.btn) self.setLayout(self.layout) self.show() def start(self): self.thread = QThread() self.obj = Worker() self.obj.strTxt.connect(self.showText) self.obj.moveToThread(self.thread) self.obj.finished.connect(self.thread.quit) self.thread.started.connect(self.obj.onJob) self.thread.start() def showText(self, str): self.txt.setText("{}".format(str)) self.autoScroll() def autoScroll(self): vsb = self.txt.verticalScrollBar() if vsb.value() <= vsb.maximum(): vsb.setValue(vsb.value() + 2) time.sleep(1) if __name__ == "__main__": app = QApplication(sys.argv) window = MyApp() sys.exit(app.exec_())
非常感谢您的帮助!
我想问一下如何在QTextEdit scoll中制作文本,以达到动画效果。动画效果应类似于视频中显示的效果:https://www.youtube.com/watch?v = ...
您想要的任务并不繁重,它是周期性的,因此使用线程是不合适的,对于此任务,我们可以使用QVariantAnimation
。