python - 我如何在 Python 应用程序之上创建一个 GUI,以便它可以执行 GUI 或 CLI?

标签 python xml user-interface gtk glade

我正在尝试用 python 编写一个应用程序来控制使用串口的电机。这一切都在 CLI 情况下正常工作并且通常很稳定。但我想知道在此代码库之上添加 GUI 有多简单?

我想会有更多的代码,但是有没有一种简单的方法来检测像 GTK 这样的东西,所以它只在 GTK 存在时应用代码?

此外,一般情况下,在 Python 中创建 GUI:是否最好在代码中保留尽可能少的 GUI 细节并使用类似 GTK 的基于 XML 的方法(使用 gtk.glade.XML() 函数)?是否有其他 GUI 工具包具有与 Glade/XML/“Explode in Code”方法类似的方法?

感谢您的任何建议。

安迪

最佳答案

is there a simple way of detecting something like GTK, so it only applied the code when GTK was present?

首先,将您的应用分成 3 个独立的模块。

  1. 实际工作:foo_core.py

  2. 导入 foo_core 的 CLI 模块。将其命名为 foo_cli.py

  3. 导入 foo_core 的 GUI 模块。将其命名为 foo_gui.pyw

foo_cli 模块如下所示。

import foo_core
import optparse

def main():
    # parse the command-line options
    # the real work is done by foo_core

if __name__ == "__main__":
   main()

foo_gui 模块看起来像这样。

 import foo_core
 import gtk # or whatever

 def main()
     # build the GUI
     # real work is done by foo_core under control of the GUI

 if __name__ == "__main__":
     main()

这通常就足够了。人们可以信任自己决定是想要 CLI 还是 GUI。

如果你想迷惑别人,你可以编写一个 foo.py 脚本来执行如下操作。

try:
    import foo_gui
    foo_gui.main()
except ImportError:
    import foo_cli
    foo_cli.main()

关于python - 我如何在 Python 应用程序之上创建一个 GUI,以便它可以执行 GUI 或 CLI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2857634/

相关文章:

java - 同一 Java 对象上的不同 XML 映射/绑定(bind)

Android 布局——在一个 ListView 行中垂直堆叠两个 TextView

android - 在Android中还有什么被认为是繁重的任务?

python - Python 中的缩进错误

java - 如何避免调用paint()方法时重新初始化一维数组

python - python以什么顺序显示字典键?

python 记录到数据库

python - sip 模块实现了 API v11.0 到 v11.2 但 PyQt5.QtCore 模块需要 API v11.3

python - 等待条件变量超时 : lock not reacquired in time

c# - 将 C# 表单序列化为 XML