запустить скрипт оболочки из графического интерфейса Python

У меня есть графический интерфейс, который будет выполнять некоторые функции при нажатии кнопок.

теперь я хочу создать кнопку в графическом интерфейсе, который будет вызывать и запускать сценарий оболочки в фоновом режиме.

как я могу это достичь?

4 Solutions collect form web for “запустить скрипт оболочки из графического интерфейса Python”

Не уверен, что ваш вопрос о том, как вызвать скрипт оболочки в Python или как сделать кнопку в вашем графическом интерфейсе. Если первый, мой комментарий выше (рекомендуя некоторые исследования по подпроцессу.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() 

Python может запускать сценарии оболочки, используя модуль supbprocess. Чтобы запустить его в фоновом режиме, вы можете запустить его из нового потока.

Использовать модуль

 import subprocess ... subprocess.call(['./yourScript.sh']) 

Для хорошего ресурса потоков python вы можете попробовать: Как использовать потоки в Python?

Добавив к тому, что сказал @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() 

Обратите внимание, что сценарий оболочки находится в том же каталоге, что и скрипт python.

При необходимости сделайте chmod 777 yourscript.sh

 subprocess.call('./yourscript.sh', shell=True) 

и import Tkinter а не import tkinter решили проблемы, с которыми я столкнулся.

Используйте 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']) 
  • Каков наиболее эффективный способ поиска вложенных списков в python?
  • Простой сервер UDP Python: проблема с получением пакетов от клиентов, отличных от localhost
  • Разделяйте типы расширений в Cython для статической типизации
  • Google App Engine добавляет изображение на страницу со статической папкой
  • Когда имеет значение использовать% d над% s при форматировании целых чисел в строки в python?
  • Собирающие данные (график рассеяния) в python?
  • Промежуточные пробелы удалены на строках heredoc Python в PyCharm
  • Подсчитайте количество раз, когда определенная строка появляется в данном слове
  • Python - лучший язык программирования в мире.