求助大神~~~pyqt5 执行脚本将输出显示在 Mainwindow 的 textedit 控件中

2019-02-27 19:45:48 +08:00
 yzs0126

pyqt5 开发的程序界面,主窗口上可以浏览打开和调用执行独立的脚本,现在想让脚本执行的结果输出显示在主窗口 textedit 中,一般脚本里信息输出都是用 print 直接打印,这样执行的结果在 python console 区域显示。我想让信息输出在主窗口的 textedit 中,那么我的脚本就得能调用主窗口上的 textedit 控件。 我的问题就是:独立的脚本怎么能够调用主窗口的 textedit 控件呢,对其进行操作?

3703 次点击
所在节点    问与答
10 条回复
ysc3839
2019-02-27 20:55:51 +08:00
脚本是怎么执行的呢?如果是在新进程里执行的话可以用管道获取输出的内容。
izoabr
2019-02-28 00:04:21 +08:00
用 popen 去执行程序,然后拿 stdout 回来,存变量里,再通过 setText 还是 setPlanText 设置文本就行。
如果你希望实时回显的话,你可能需要线程和信号 emit
yzs0126
2019-02-28 16:24:18 +08:00
@izoabr 是 os.popen 还是 subprocess.Popen ?我试了 os.popen,相比 os.system,popen 操作可以返回的是一个 file 对象。我可以把这个 file 对象里的文本输出到 textedit,这个是你给的思路,我没理解错吧!
但是在执行新脚本的时候,脚本里有 print 语句好像就报错,OSError [Errno 22]
yzs0126
2019-02-28 16:27:24 +08:00
@ysc3839 谢谢!你说的管道输出,是指通过 subprocess.Popen 建立新进程执行脚本吗,然后用 PIPE 获取输出吗?
ysc3839
2019-02-28 16:36:55 +08:00
@yzs0126 是的。
yzs0126
2019-02-28 17:20:53 +08:00
@ysc3839 非常感谢! 我用 subprocess.Popen 和 PIPE 获取到了脚本里 print 的内容 问题已解决
yzs0126
2019-02-28 17:21:00 +08:00
@izoabr 非常感谢! 我用 subprocess.Popen 和 PIPE 获取到了脚本里 print 的内容 问题已解决
yzs0126
2019-02-28 17:23:30 +08:00
@izoabr 其实你的建议对我帮助也很大,但是另外一个回复者的建议更直接有效,铜币比较少,我就拿来感谢他了,很抱歉!真的很感谢前辈的指教
izoabr
2019-02-28 17:53:08 +08:00
@yzs0126 #8 解决了就好,铜币又不能花,一大堆都没用,不在乎那个,不用客气哦。
yzs0126
2019-03-01 10:38:11 +08:00
@izoabr 还想请教一个问题,subprocess.Popen 能给执行的脚本传入参数吗?想给这个脚本传入一个参数,参数是一个 handle,脚本里要调用这个 handle 实例进行操作。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/539377

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX