我有一个桌面图标(Linux Mint系统),它调用脚本(conky)但也需要退出,所以我不会一直打开终端窗口。我试图将其转换为屏幕上的python按钮。
我可以让Python Button运行脚本,但是一旦脚本运行正常,我就无法关闭终端。
这是正常的命令:/home/user/.conky_start.sh && exit
当前的Python按钮脚本:
import Tkinter
from Tkinter import *
import subprocess
top = Tkinter.Tk()
def run_conky():
subprocess.call(['/home/user/.conky_start.sh', '&&', 'exit'], shell=True)
B = Tkinter.Button(top, text ="Conky", command = run_conky)
B.pack()
top.mainloop()
答案 0 :(得分:0)
您应该使用:
subprocess.call('/home/user/.conky_start.sh && exit', shell=True)
当shell=True
call
的第一个参数必须是表示命令行的字符串时。如果传递列表,则第一个元素用作命令行,其他参数作为选项传递给底层shell。
换句话说,代码中的&& exit
从未执行过,因为它作为选项传递给shell(可能只是忽略了无法识别的选项)。
有关subprocess
函数参数的详细信息,请参阅this问题。
答案 1 :(得分:0)
在尝试启动shell脚本后退出Python脚本:
#!/usr/bin/env python
import subprocess
import Tkinter
root = Tkinter.Tk()
def start_conky():
try:
subprocess.Popen(['/home/user/.conky_start.sh']) # don't wait
finally:
root.destroy() # exit the GUI
Tkinter.Button(root, text="Conky", command=start_conky).pack()
root.mainloop()