PyQt5文本框实时显示最新数据

说明:此文章主要为了记录在界面文本显示区域,实时显示最新数据,及将滚动条固定在最下方。

代码复制可用。

import sys
from PyQt5 import QtWidgets, QtGui, QtCore


class ClassTextAreaWrite(QtWidgets.QWidget):

    def __init__(self):
        super(ClassTextAreaWrite, self).__init__()
        self.init_ui()
        self.bind_trigger()

    def init_ui(self):
        self.setGeometry(300, 300, 300, 220)
        self.setWindowTitle("PushButtonClicked")
        button = QtWidgets.QPushButton(text="Start", parent=self)
        self.button = button
        timer = QtCore.QTimer()
        self.timer = timer

        view_area = QtWidgets.QPlainTextEdit(parent=self)
        view_area.setGeometry(10, 60, 280, 100)
        self.view_area = view_area

    def write(self, text):
        """"""
        cursor = self.view_area.textCursor()
        cursor.movePosition(QtGui.QTextCursor.End)
        cursor.insertText(text + "\n")
        self.view_area.setTextCursor(cursor)
        self.view_area.ensureCursorVisible()

    def bind_trigger(self):
        # Button clicked trigger
        self.button.clicked.connect(lambda: self.timer.start(1))
        self.timer.timeout.connect(self.clicked_button)

    def clicked_button(self):
        self.write("Write Num: {0}".format(self.timer.interval()))
        self.timer.setInterval(self.timer.interval() + 1)


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    push_button_clicked = ClassTextAreaWrite()
    push_button_clicked.show()
    sys.exit(app.exec_())

Tips: 在PyQt中使用time.sleep(1)会导致界面阻塞。所以此处使用了QTimer,更多详细内容请见专栏QTimer文章。

  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用QPlainTextEdit控件来实现终端数据显示。QPlainTextEdit是一个用于显示纯文本的多行文本框控件,可以设置背景颜色、字体、文本颜色等属性。 下面是一个简单的例子,演示如何使用QPlainTextEdit控件实现终端数据显示: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QPlainTextEdit class TerminalWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle('Terminal') self.setGeometry(100, 100, 800, 600) self.text_edit = QPlainTextEdit(self) self.text_edit.setGeometry(0, 0, 800, 600) self.text_edit.ensureCursorVisible() self.text_edit.setReadOnly(True) self.text_edit.setStyleSheet('background-color:black; color:white; font-family:Courier; font-size:12pt;') def write(self, text): self.text_edit.insertPlainText(text) if __name__ == '__main__': app = QApplication(sys.argv) window = TerminalWindow() window.show() sys.stdout = window sys.stderr = window sys.stdin = window sys.exit(app.exec_()) ``` 这个例子中,我们创建了一个继承自QMainWindow的窗口类TerminalWindow。在该类的构造函数中,我们首先调用父类的构造函数,然后创建一个QPlainTextEdit控件,并设置其大小和位置,接着设置其只读属性,以及背景颜色、字体、文本颜色等样式属性。 在窗口类中还定义了一个write方法,该方法用于将输出文本写入到QPlainTextEdit控件中。 最后,在主程序中创建了一个QApplication对象和一个TerminalWindow对象,将sys.stdout、sys.stderr、sys.stdin分别重定向到TerminalWindow对象的实例,以便在终端窗口中显示输出和接受输入。最后调用app.exec_()启动应用程序的事件循环。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值