# -*- coding:utf-8 -*-
"""
@Time:2022/3/22 21:53
@Author:小柠檬
@File:text_browser.py
"""
import time
from PyQt5 import uic, QtCore
from PyQt5.QtCore import QThread, pyqtSignal, QObject
from PyQt5.QtWidgets import QApplication
class UpdateThread(QThread):
# 实时显示追加线程(要继承QThread, 继承threading.Thread不行)
signal = pyqtSignal(str) # 信号
def run(self):
for i in range(1000):
self.signal.emit(f'追加小柠檬{i+1}') # 发射信号(实参类型要和定义信号的参数类型一致)
time.sleep(0.01)
class QtSignal(QObject):
# 自定义信号必须继承QObject且写在类中且必须是类变量
signal = pyqtSignal(str)
class TextBrowser:
# textBrowser一般用于显示文本
def __init__(self):
# 加载UI界面
self.ui = uic.loadUi("text_browser.ui")
# 1.写入文本(会覆盖之前的文本)
self.ui.textBrowser.setText('写入小柠檬')
# 2.追加文本(不会覆盖之前的文本)
self.ui.textBrowser.append('追加小柠檬')
self.ui.textBrowser.ensureCursorVisible() # 每次添加文本光标都在最后一行
# 3.获取文本
text_browser_content = self.ui.textBrowser.toPlainText()
print(text_browser_content)
# 4.清空文本
self.ui.textBrowser.clear()
# 5.实时追加文本(采用多线程方式追加,不然界面会卡死)
self.update_thread = UpdateThread()
self.update_thread.signal.connect(self.slot_text_browser) # 连接槽函数
self.update_thread.start()
def slot_text_browser(self, text):
# text_browser槽函数
self.ui.textBrowser.append(text)
def main():
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling) # 和designer设计的窗口比例一致
app = QApplication([])
text_browser = TextBrowser()
text_browser.ui.show()
app.exec_()
if __name__ == '__main__':
main()
pyQt5-textBrowser常用方法
最新推荐文章于 2024-05-13 12:32:21 发布