如何通过 CLI 运行图形程序?

如何通过 CLI 运行图形程序?

我有一个使用 tk() 的图形程序 (k40-whisperer.py)。我添加了 CLI 功能,当我通过带显示器的计算机运行它时,它可以工作。

我想通过 exec() 函数(例如通过 ssh)或通过 php exec 命令来运行它。问题是当我这样做时,我得到了与显示相关的错误。

$ laser
Traceback (most recent call last):
  File "./k40_whisperer.py", line 3855, in <module>
    root = Tk()
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1822, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: couldn't connect to display "0.0"

我尝试通过会话设置显示端口,ssh -X但它不喜欢这样,而且我实际上也不想要它。

我尝试添加:

import matplotlib    
matplotlib.use('Agg')

在读到 matplotlib 分配了自己的显示端口后,我仍然收到相同的错误。还有哪些其他方法可以通过 shell 执行图形程序?同样,我不想也不关心在任何时候有 GUI,我只想向程序发送 cli 参数并让它运行。

您可以假设删除对 tk() GUI 对象的所有引用将非常繁琐。

本着编辑源代码以抑制图形输出的精神,我尝试了root.withdraw()仍然出现相同的错误,即使在图形会话中运行源代码时没有显示窗口。

tkinter 的初始化发生在以下代码行中:

root = Tk()
root.withdraw()
app = Application(root)

相关内容