我有一个GUI,它会在按下按钮时执行某些功能。
现在我想在GUI中创建一个按钮,它将在后台调用并运行shell脚本。
我怎样才能实现这一目标?
答案 0 :(得分:3)
不确定您的问题是关于如何在Python中调用shell脚本,或者如何在GUI中创建按钮。如果是前者,我上面的评论(建议对subprocess.Popen进行一些研究)就是解决方案。否则:
# assuming Python3
import tkinter as tk
import subprocess as sub
WINDOW_SIZE = "600x400"
root = tk.Tk()
root.geometry(WINDOW_SIZE)
tk.Button(root, text="Push me!", command=lambda: sub.call('path/to/script')).pack()
答案 1 :(得分:1)
Python可以使用supbprocess模块运行shell脚本。要在后台运行它,您可以从新线程启动它。
使用模块
import subprocess
...
subprocess.call(['./yourScript.sh'])
对于一个好的python线程资源,您可以尝试:How to use threading in Python?
答案 2 :(得分:1)
添加@lakesh所说的内容,下面是完整的脚本:
import Tkinter
import subprocess
top = Tkinter.Tk()
def helloCallBack():
print "Below is the output from the shell script in terminal"
subprocess.call('./yourscript.sh', shell=True)
B = Tkinter.Button(top, text ="Hello", command = helloCallBack)
B.pack()
top.mainloop()
请注意,shell脚本与python脚本位于同一目录中。
如果需要,请执行chmod 777 yourscript.sh
subprocess.call('./yourscript.sh', shell=True)
和import Tkinter
以及不 import tkinter
解决了我所面临的问题。
答案 3 :(得分:0)
使用Tkinter创建按钮。有关详细信息,请观看此视频:http://www.youtube.com/watch?v=Qr60hWFyKHc
示例:
from Tkinter import *
root = Tk()
app = Frame(root)
app.grid()
button1 = Button(app,"Shell Script")
button1.grid()
root.mainloop()
添加功能: 将button1行更改为:
button1 = Button(app,"Shell Script",command=runShellScript)
def runShellScript():
import subprocess
subprocess.call(['./yourScript.sh'])