加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

将python gui应用程序与c控制台应用程序集成的最简单方法

发布时间:2020-12-20 12:16:13 所属栏目:Python 来源:网络整理
导读:我有一个c控制台应用程序将c文件转换为html文件,c文件位置作为命令行参数传递给程序.(该应用程序适用于 Windows平台) 我想做的是有一个python gui应用程序,允许用户选择一个文件,并将文件的位置传递给c app进行处理. 我已经知道如何使用tkinter创建一个基本
我有一个c控制台应用程序将c文件转换为html文件,c文件位置作为命令行参数传递给程序.(该应用程序适用于 Windows平台)

我想做的是有一个python gui应用程序,允许用户选择一个文件,并将文件的位置传递给c app进行处理.

我已经知道如何使用tkinter创建一个基本的python gui,但我无法弄清楚或找到有关如何整合这两个程序的任何有用信息.

也许可以使用pOpen()方法将字符串传递给c app? (但我无法弄清楚……)

注意:我是python的新手,所以代码示例可能有帮助,而不仅仅是描述,(因为我不熟悉所有的python库等),尽管任何帮助都会受到赞赏.

解决方法

您可能想要 subprocess模块.

至少:

import subprocess
retcode = subprocess.call(["/path/to/myCprogram","/path/to/file.c"])
if retcode == 0:
   print "success!"

这将使用参数运行程序,然后返回其返回代码.

请注意,subprocess.call将阻塞,直到程序完成,因此如果它不是快速运行的那个,那么整个Tkinter GUI将停止重绘,直到它完成.

要获得更高级的使用,您可能需要使用subprocess.Popen.这将要求您在命令完成之前进行轮询,但允许您以较少的阻塞进行轮询.

如果您的C程序将HTML打印到标准输出,您将需要像这样管道输出:

proc = subprocess.Popen(["/path/to/myCprogram","/path/to/file.c"],stdout=subprocess.PIPE,stderr=subprocess.PIPE)
output,err_output = proc.communicate()
# output will now contain the stdout of the program in a string

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读