pyqt5 开发的程序界面,主窗口上可以浏览打开和调用执行独立的脚本,现在想让脚本执行的结果输出显示在主窗口 textedit 中,一般脚本里信息输出都是用 print 直接打印,这样执行的结果在 python console 区域显示。我想让信息输出在主窗口的 textedit 中,那么我的脚本就得能调用主窗口上的 textedit 控件。 我的问题就是:独立的脚本怎么能够调用主窗口的 textedit 控件呢,对其进行操作?
1
ysc3839 2019-02-27 20:55:51 +08:00 via Android
脚本是怎么执行的呢?如果是在新进程里执行的话可以用管道获取输出的内容。
|
2
izoabr 2019-02-28 00:04:21 +08:00 1
用 popen 去执行程序,然后拿 stdout 回来,存变量里,再通过 setText 还是 setPlanText 设置文本就行。
如果你希望实时回显的话,你可能需要线程和信号 emit |
3
yzs0126 OP @izoabr 是 os.popen 还是 subprocess.Popen ?我试了 os.popen,相比 os.system,popen 操作可以返回的是一个 file 对象。我可以把这个 file 对象里的文本输出到 textedit,这个是你给的思路,我没理解错吧!
但是在执行新脚本的时候,脚本里有 print 语句好像就报错,OSError [Errno 22] |
4
yzs0126 OP @ysc3839 谢谢!你说的管道输出,是指通过 subprocess.Popen 建立新进程执行脚本吗,然后用 PIPE 获取输出吗?
|
6
yzs0126 OP @ysc3839 非常感谢! 我用 subprocess.Popen 和 PIPE 获取到了脚本里 print 的内容 问题已解决
|
7
yzs0126 OP @izoabr 非常感谢! 我用 subprocess.Popen 和 PIPE 获取到了脚本里 print 的内容 问题已解决
|