从相同的Python脚本启动并捕获GUI的输出并传输变量?

时间:2009-12-28 23:47:19

标签: python user-interface automation subprocess

我必须从现有的Python应用程序启动GUI。 GUI实际上是可以单独运行的独立Python GUI。现在,我正在使用类似的东西启动GUI:

           res=Popen(['c:\python26\pythonw.exe',
                   full_filename,
                   str(RESULTs),
                   str(context)], stdout=PIPE).communicate()[0]

其中full_filename是python GUI的完整路径。如您所见,问题是我必须通过命令行将RESULTS变量传递给GUI。这可以正常工作,直到命令行变得太长,我必须将变量pickle到一个单独的文件,然后在GUI启动时重新加载它们。这有效,但速度很慢。

因此,我想要做的是以某种方式从我的python脚本中启动GUI,将有问题的变量传递给GUI进行处理,然后在调用脚本中捕获GUI的结果。如上所示,这当前通过res变量发生,因为GUI可以配置为将其输出写入此变量中捕获的标准输出。

有什么想法吗?我希望有人可以建议一种更优雅的方式。这一切都发生在winXP机器上。

2 个答案:

答案 0 :(得分:1)

从它的声音来看,除非Nazarius对第一步的出色建议不可行,否则像pyWinAuto这样的程序会做你需要的。我们使用它来控制我们自己的基于wxPython的应用程序以用于自动化测试,Python脚本通过在GUI字段中输入文本,单击按钮等来控制程序。这个术语的一般术语是“GUI自动化”,你可以通过搜索找到很多关于它的信息。 pyWinAuto只是Python世界中可用的一个选项,但是它非常好。

答案 1 :(得分:0)

python应用程序是否开源?您可以查看GUI本身如何连接到后端,并直接将相关模块导入到您的应用程序中,然后像GUI一样调用它,绕过这个混乱的黑客。