Mic*_*ael 4 python linux bash user-interface command-line-interface
我想做以下事情:
如果从终端启动bash/python脚本,它将执行诸如打印错误消息文本之类的操作.如果从GUI会话启动脚本,例如双击文件浏览器,它将执行其他操作,例如显示GUI消息框.
您可以检查,看看是否stdin和stdout连接到终端或没有.从GUI运行时,通常stdin根本不连接,并stdout连接到日志文件.当从终端中运行,既stdin和stdout将被连接到一个终端.
在Python中:
import os
import sys
if os.isatty(sys.stdout.fileno()):
# print error message text
else:
# display GUI message
Run Code Online (Sandbox Code Playgroud)
但是,您应该检查这是否适合您,因为它不能完全满足您的要求.但这是我能想到的最好的东西,它不依赖于太多的魔法.
DISPLAY在使用GUI代码之前,您应该检查环境变量是否已设置,因为没有它,它将无法工作.
需要注意的是终端的用户仍然可以重定向stdin或stdout以/dev/null(例如),这可能导致你的程序去与GUI行为.所以它远非完美.
最后,即使我已经给你答案,请不要这样做!用户对程序的行为根据其调用方式进行更改会让人感到困惑.