- 主题:pyqt5输出到textEdit,如何有输出到控制台一样的效果,及时输出
谢谢你的回复。可是你用的是定时器。实际的需求是:从excel导入到数据库,有多个excel文件。期望每导入一个文件到mssql后,textEdit里显示导入成功。这个时间是不确定的,如何输出到textEdit?
【 在 ToSimplicity 的大作中提到: 】
: QTimer.singleShot 不是 QTimer.singlaShot
: from PyQt5.Qt import *
: import sys
: ...................
--
FROM 120.242.252.*
搞一个线程,导入完一个excel用pyqtsignal发送(trigger)一个信号,然后主线程(mainwindow)把这个信号绑定一个函数,函数用于更新textEdit
【 在 feng321 的大作中提到: 】
:
: 谢谢你的回复。可是你用的是定时器。实际的需求是:从excel导入到数据库,有多个excel文件。期望每导入一个文件到mssql后,textEdit里显示导入成功。这个时间是不确定的,如何输出到textEdit?
: 【 在 ToSimplicity 的大作中提到: 】
: : QTimer.singleShot 不是 QTimer.singlaShot
: : from PyQt5.Qt import *
#发自zSMTH@V1916A
--
FROM 110.188.93.*
汉字都认识,就是不知道什么意思,如何操作?
【 在 st02xh 的大作中提到: 】
: 搞一个线程,导入完一个excel用pyqtsignal发送(trigger)一个信号,然后主线程(mainwindow)把这个信号绑定一个函数,函数用于更新textEdit
:
: #发自zSMTH@V1916A
--
FROM 120.242.252.*
看不懂啊。这个该怎么写?
【 在 ToSimplicity 的大作中提到: 】
: 另一种是做个“控制台任务thread”
: 在GUI thread实现更新屏显:
: def update_display_widget_console_like(message):
: ...................
--
FROM 120.242.252.*
这个就是 gui 程序的常规操作。
你这里导入excel是个耗时操作,不应该和ui放在一起在主线程中完成,而要在独立的线程中做,导入结束后发信号,主线程的textedit通过槽接信号,完成ui内容修改。
可能读点qt教程涉及多线程的示例代码会有感觉?我印象里pyqt的学习材料图糙快猛的多,不如原本c++qt库的系统,而且pyqt参考文档一般,没有c++下qt经验是可能麻烦一点。
【 在 st02xh 的大作中提到: 】
: 搞一个线程,导入完一个excel用pyqtsignal发送(trigger)一个信号,然后主线程(mainwindow)把这个信号绑定一个函数,函数用于更新textEdit
:
: 【 在 feng321 的大作中提到: 】
: ...................
--
修改:milksea FROM 114.249.195.*
FROM 114.249.195.*
可以看看官网的多线程例子?虽然是pyside库不是pyqt5但其实原理是一回事,当然你别直接抄代码就是了。
https://doc.qt.io/qtforpython/examples/example_corelib__threads.html
这个例子我觉得为了好看还是太长了,居然要用图形变化而不用文本变化做例子。关键是理解多线程编程基本概念,和在qt中利用信号和槽进行线程间通信。
更循循善诱的教程可能是这种
https://realpython.com/python-pyqt-qthread/
更简单的中文示例可能这种
https://www.cnblogs.com/linyfeng/p/12239856.html
【 在 feng321 的大作中提到: 】
: 看不懂啊。这个该怎么写?
: 【 在 ToSimplicity 的大作中提到: 】
: : 另一种是做个“控制台任务thread”
: ...................
--
修改:milksea FROM 114.249.195.*
FROM 114.249.195.*
我用了类似功能,要用一种高效的append 方法,在overstack上看看
【 在 feng321 (sfdf) 的大作中提到: 】
: 发信人: feng321 (sfdf), 信区: Python
: 标 题: pyqt5输出到textEdit,如何有输出到控制台一样的效果,及时输出
: 发信站: 水木社区 (Tue Oct 6 08:00:53 2020), 转信
:
--
FROM 111.198.231.*
能给个例子看看吗?
【 在 leaf918 的大作中提到: 】
: 我用了类似功能,要用一种高效的append 方法,在overstack上看看
--
FROM 120.242.252.*
void ViewCapacitor::new_msg_handler(QString msg) {
qout05 << QString("sender thread %1,inform, on thread %2")
.arg(sender()->thread()->objectName())
.arg(thread()->objectName()) << msg;
if (_console_label == nullptr) {
return;
}
QTextDocument *doc = _console_label->document();
// // 处理最大长度问题,不然内存持续增长
doc->setMaximumBlockCount(1000);
QTextCursor cursor(doc);
cursor.movePosition(QTextCursor::End);
cursor.beginEditBlock();
cursor.insertBlock();
cursor.insertHtml(msg);
cursor.endEditBlock();
_console_label->moveCursor(QTextCursor::End);
}
【 在 feng321 (sfdf) 的大作中提到: 】
: 发信人: feng321 (sfdf), 信区: Python
: 标 题: Re: pyqt5输出到textEdit,如何有输出到控制台一样的效果,及时
: 发信站: 水木社区 (Fri Jun 18 10:24:12 2021), 转信
:
--
FROM 223.104.42.*