Форум сайта python.su
0
По клику на окошке программы запускается видеофайл. Но никак не получается прервать его воспроизведение. Сама программа закрывается, а видеофайл проигрывается до конца
import pygame
from pygame.locals import *
import subprocess
PIPE = subprocess.PIPE
cmd = 'omxplayer -o hdmi 1.MPG'
cmd2 = 'sudo kill '
running = True
pygame.init()
window = pygame.display.set_mode((300,300))
window.fill(pygame.Color(0,0,0))
fps = pygame.time.Clock()
global p
while running:
for event in pygame.event.get():
if event.type == MOUSEBUTTONDOWN:
p = subprocess.Popen(cmd, shell = True)
pk = p.pid
cmd2=cmd2+str(pk)
if event.type == pygame.KEYDOWN:
running = False
print cmd2
subprocess.Popen(cmd2, shell = True)
pygame.display.update()
fps.tick(30)
pygame.quit()
Отредактировано george31 (Янв. 9, 2016 14:23:27)
Офлайн
1
Зачем sudo ?
Офлайн
0
kampellaЧтоб наверняка))
Зачем sudo ?
Офлайн
186
import os import signal os.kill(int(p.pid), signal.SIGTERM) os.waitpid(int(p.pid), 0)
Офлайн
0
RodegastРазобрался почему не получается закрыть видео: p.pid возвращает не идентификатор “omxplayer”, а “sh” . Если использовать
subprocess.Popen('pkill omxplayer', sheel = True)Офлайн
186
> p.pid возвращает не идентификатор “omxplayer”, а “sh”
Не надо его запускать в отдельном шеле, тогда и pid будет правильным. pid omxplayer и pid sh скорей всего будут отличатся на 1, но это не всегда гарантируется.
Офлайн
0
RodegastА как сделать так, чтобы omxplayer не запускался в отдельном шеле?
> p.pid возвращает не идентификатор “omxplayer”, а “sh” Не надо его запускать в отдельном шеле, тогда и pid будет правильным. pid omxplayer и pid sh скорей всего будут отличатся на 1, но это не всегда гарантируется.
Офлайн
186
p = subprocess.Popen(cmd)
Отредактировано Rodegast (Янв. 10, 2016 19:15:48)
Офлайн