我想开始编写一些可以用作工具等的简单应用程序。我希望这些应用程序能让我简化我经常使用的某些终端进程。它们与我的本地文件以及其他应用程序(例如 db2)进行交互。为此,我已经开始学习一点 C 语言。
我以为我会使用带有嵌入式 bash 命令的 C。我想知道这是否是编写这些应用程序的最佳/最常用方法?有没有更好的方法来做到这一点?另外,我需要能够显示终端输出。这可能吗?我对这种方法的唯一问题是它不能很好地转移到非 Linux 操作系统。
任何见解或大方向的推动将不胜感激。
如果您想要跨平台,请考虑Qt或WxWidgets。我会选择 Qt,但这只是因为我不知道 WxWidgets ;)
如果您想要快速简单的事情,请将 Qt 与PyQt或PySide 一起使用(另请参阅此 SO question)。根据它的网页,WxWidgets 也有 Python 绑定。学习 Python 通常很有趣、有用,而且比学习 C++ 更快、更容易一个数量级。
忘记用于 GUI 编程的 C,GUI 本质上是基于对象的,并且更容易在自然支持对象的语言上使用。
对于子进程处理,快速搜索 Python 和 Qt在 www.qtforum.org 找到了这个示例。
除了提到的PyQt和wxPython等工具包外,标准 python 本身还带有一个名为Tkinter的跨平台 GUI 工具包。
此外,如果您在 Linux 上,您可以尝试(对于 C)Gtk。
对于 C++,我建议使用 Qt或wxWidgets
或者如果您不介意安装重量级虚拟机,请尝试 Java。它带有Swing。
除了所有这些用于图形用户界面的工具包之外,将图形用户程序与命令行程序接口是..好吧..没关系。您将需要打开子进程(命令行进程)的管道,从中读取输出,写入子进程的输入流,并向用户显示适当的消息。
我建议在 wxWidgets 上使用 Qt。对于 Linux 的可移植性,根据我的经验,Qt 效果更好。我有一些项目在 mac/windows 上运行良好,但由于运行特定 wxWidget 构建的细微差别,在 linux 上出现了段错误。使用 Qt 还允许您使用大量特定于 Qt 的高效和快速的数据结构。