PyQt5快速上手基础篇11-表格形式显示统计数据在textBrowser上

前言

本节我们学习使用Python的prettytable的用法,使用prettytable可以非常方便的使用表格形式打印统计数据。

一、基础知识

1.prettytable简介

PrettyTable是python中的一个第三方库,主要用来将数据格式化成表格形式显示。

2.安装

pip3 install PrettyTable

3.常用函数说明

在这里插入图片描述

二、实例

1. QT Designer设计UI

复制“ pyqt5快速上手基础篇8-菜单栏、工具栏和状态栏“中image文件夹内容和action_tool.ui,并修改action_tool.ui名字为chart.ui,用Qt Designer打开如下所示:
在这里插入图片描述
注意串口combox没有任何数据显示,是因为我们没有使用Qt Designer为其添加item。

2 将*.ui转换为ui_chart.py

进入run.py目录,输入如下命令:

pyuic5 -o ui_chart.py chart.ui

3 编写python程序

# encoding=utf-8
import sys
import PyQt5.QtWidgets as qw
import PyQt5.QtCore as qc
import prettytable as pt
import ui_chart
 
class myForm(qw.QMainWindow, ui_chart.Ui_MainWindow):
 def __init__(self):
 super().__init__()
 self.setupUi(self)
 #init gui
 self.statusbar.showMessage("status:ok")
 self.pushButton.clicked.connect(self.btn_test_cb)
 
 def btn_test_cb(self):
        tb = pt.PrettyTable()
        tb.field_names = ["姓名", "语文", "数学", "英语"]
        tb.add_row(["王二", 80, 90, 70])
        tb.add_row(["李三", 85, 95, 80])
        tb.add_row(["赵四", 90, 75, 86])
 print(tb)
        text_data = str(tb)
 self.textBrowser.insertPlainText(text_data)
 self.textBrowser.insertPlainText("\r\n")
 self.textBrowser.insertPlainText("clear_rows后数据如下\r\n")
        tb.clear_rows()
 print(tb)
        text_data = str(tb)
 self.textBrowser.insertPlainText(text_data)
 self.textBrowser.insertPlainText("\r\n重新add_row后数据如下\r\n")
        tb.add_row(["刘无", 85, 95, 80])
        tb.add_row(["杨六", 90, 75, 86])
 print(tb)
        text_data = str(tb)
 self.textBrowser.insertPlainText(text_data)
 self.textBrowser.insertPlainText("\r\nclear后数据如下\r\n")
        tb.clear()
 print(tb)
        text_data = str(tb)
 self.textBrowser.insertPlainText(text_data)
if __name__ == '__main__':
    app = qw.QApplication(sys.argv)
    w1 = myForm()
    w1.show()
    app.exec_()

上述程序实现,当点击发送按钮的时候,首先初始化一个表格数据,显示在textBrowser上,然后调用clear_rows()清楚表格数据,保留表格标题,然后重新添加数据并显示,最后调用clear()清楚表格,销毁标题和数据内容。

三、运行

进入文件目录,输入python3 run.py,即可弹出上述用QT Designer设计出来的MainWindow页面。
在这里插入图片描述
到此,我们实现了在pyqt上的textBrower上显示表格形式数据。

四、结语

(1) PrettyTable

注意PrettyTable是Python的一个第三方包,所以pyqt5支持,直接在控制台写纯python脚本也是可以的。

(2)获取资料

如您在使用过程中有任何问题,请加QQ群进一步交流。

QQ交流群:906015840 (备注:物联网项目交流)

项目实战:PyQt5快速开发串口工具

扫码关注公众号:物联网客栈,回复pyqt5即可获取本节源码。
在这里插入图片描述
一叶孤沙出品:一沙一世界,一叶一菩提

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PyQt5中,我们可以通过将print语句的输出重定向到QTextBrowser组件来将打印内容显示TextBrowser上。 首先,我们需要创建一个QTextBrowser组件,并将其添加到主窗口中。可以使用如下代码: ```python textbrowser = QtWidgets.QTextBrowser(self) self.setCentralWidget(textbrowser) ``` 接下来,我们需要将print语句的输出重定向到QTextBrowser组件。可以使用如下代码: ```python import sys from PyQt5.QtCore import Qt from PyQt5.QtGui import QTextCursor class PrintRedirect(QtCore.QObject): newText = QtCore.pyqtSignal(str) def write(self, text): self.newText.emit(str(text)) sys.stdout = PrintRedirect() ``` 最后,我们需要将QTextBrowser组件的setTextCursor方法与新的输出信号连接起来。这样,每当有新的打印输出时,就会更新QTextBrowser中的文本。 ```python textbrowser.newText.connect(textbrowser.append) ``` 现在,每次使用print语句时,输出都会自动显示在QTextBrowser组件上。 以下是一个完整的例子: ```python from PyQt5 import QtWidgets, QtCore class MainWidget(QtWidgets.QMainWindow): def __init__(self): super().__init__() textbrowser = QtWidgets.QTextBrowser(self) self.setCentralWidget(textbrowser) sys.stdout = PrintRedirect() textbrowser.newText.connect(textbrowser.append) class PrintRedirect(QtCore.QObject): newText = QtCore.pyqtSignal(str) def write(self, text): self.newText.emit(str(text)) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) window = MainWidget() window.show() sys.exit(app.exec_()) ``` 这样,当你运行python程序时,print语句的输出就会显示在QTextBrowser组件上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

物联网客栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值