如何在Python APP之上创建GUI,以便它可以执行GUI或CLI?

Sch*_*iss 2 python xml gtk user-interface glade

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

我假设会有更多的代码,但是有一种简单的方法来检测像GTK这样的东西,所以它只在GTK出现时才应用代码吗?

此外,通常在Python中创建GUI:最好是从代码中保留少量GUI细节并使用类似GTK的基于XML的方法(使用gtk.glade.XML()函数)?是否有其他GUI工具包具有与Glade/XML /"代码爆炸"方法类似的方法?

谢谢你的建议.

安迪

S.L*_*ott 10

是否有一种简单的方法来检测像GTK这样的东西,所以它只在GTK出现时才应用代码?

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

  1. 实际工作:foo_core.py.

  2. 导入的CLI模块foo_core.叫它foo_cli.py.

  3. 导入的GUI模块foo_core.叫它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()
Run Code Online (Sandbox Code Playgroud)

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()
Run Code Online (Sandbox Code Playgroud)

这通常就足够了.如果人们想要CLI或GUI,可以信任他们自己做出决定.

如果你想让人混淆,你可以编写一个foo.py类似下面的脚本.

try:
    import foo_gui
    foo_gui.main()
except ImportError:
    import foo_cli
    foo_cli.main()
Run Code Online (Sandbox Code Playgroud)