如何让Python2.7处理具有&&;退出;?
我有一个桌面图标(LinuxMintSystem),它调用一个脚本(conky),但也需要退出,这样我就不会一直打开终端窗口。我正在尝试将其转换为屏幕上的python按钮 我可以让Python按钮运行脚本,但一旦脚本启动并正常运行,我就无法让它关闭终端 这是正常的命令:如何让Python2.7处理具有&&;退出;?,python,linux,shell,python-2.7,tkinter,Python,Linux,Shell,Python 2.7,Tkinter,我有一个桌面图标(LinuxMintSystem),它调用一个脚本(conky),但也需要退出,这样我就不会一直打开终端窗口。我正在尝试将其转换为屏幕上的python按钮 我可以让Python按钮运行脚本,但一旦脚本启动并正常运行,我就无法让它关闭终端 这是正常的命令:/home/user/.conky\u start.sh&&exit 当前Python按钮脚本: import Tkinter from Tkinter import * import subprocess top = Tkin
/home/user/.conky\u 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()
你应使用:
subprocess.call('/home/user/.conky_start.sh && exit', shell=True)
当shell=True
时,call
的第一个参数必须是表示命令行的字符串。如果传递列表,则第一个元素用作命令行,其他参数作为选项传递给底层shell
换句话说,代码中的&&exit
从未执行过,因为它是作为选项传递给shell的(可能只是忽略了无法识别的选项)
有关
子流程
函数的参数的更多信息,请参见问题。要在尝试启动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()
是否要在启动
.conky_start.sh
后退出Python脚本?感谢您的建议,该脚本可能会重复。事实上,这是我尝试的第一件事。可悲的是,这并没有对退出问题产生影响。太棒了,这很有效,让我更进一步!嗯,当脚本退出时,它开始输出更多信息。另一个被调用的脚本会查找正在运行的媒体播放器以显示歌曲标题/艺术家。它有点抱怨它总是找不到任何东西。改天再调查。希望我能投票,但我需要更多的9个声望点: