2014-02-24 1 views
4

누구나 FuncAnimation을 중지하는 기본 방법을 알고 있습니까? 오실로스코프에서 데이터를 기록하는 데 사용 중이며 필요에 따라 데이터를 일시 중지하고 다시 시작할 수 있기를 원합니다. 버튼 클릭 이벤트를 보낼 수있는 방법이 있습니까?Python - Stop FuncAnimation

감사, 데릭

+0

를 호출하기 전에 더 곳이 줄을 추가해야 현재 구현 됨. 이 경우 타이머를 스스로하는 것이 좋습니다. – tacaswell

+0

알았어요. 그래서 TimedAnimation 함수를 사용하는 것이 좋습니다. 이벤트 소스를 가져 와서 멈출 수 있다는 의미입니다. 그런 다음 별도의 기능으로 자체 타이머를 설정하여 데이터를 그림으로 업데이트합니다. – tesla

+0

아니요,'animation' 모듈을 전혀 사용하지 마십시오 (참고 자료 제외). 내 지식으로는 실행중인 애니메이션을 '일시 중지'할 방법이 없습니다. – tacaswell

답변

7

FuncAnimationTimedAnimation의 서브 클래스입니다. 숫자 또는 생성기 일 수있는 업데이트 함수에 대한 입력으로 프레임을 사용합니다. reapeatFalse으로 설정하면 TimedAnimation에서 상속 된 인수로 repeat이 걸리고 애니메이션 반복을 중지 할 수 있습니다.

추 신 : Matplotlib 문서는 절름발이, 실수, 게으른 글쓰기 스타일, 명확하지 않은 설명입니다. 언젠가, 나는 무엇을해야 할지를 결정하기 위해 소스 코드를 파헤쳐 야합니다. FuncAnimation처럼

, 또한 update 기능에 대한 추가 인수로 fargs이 필요하지만 그 문서에, 그것은 fargs의 종류를 말을하지 않습니다. 실제로 소스 코드에서 발견 한 내용은 fargs is used as a list입니다.

2

일부 모듈이있을 수 있지만 자체 일시 중지 기능을 정의합니다. 그것은 그림의 어딘가를 클릭하여 애니메이션을 정지시킵니다. 다시 클릭하면 애니메이션이 플롯됩니다.

애니메이션 시작 전에 플래그를 정의해야합니다. 애니메이션 기능 (애니메이션 중에 호출되는 함수)이 그려지면, if not pause:과 같은 컨트롤 블록을 정의한 다음 아래 함수를 플로팅하기위한 코드를 작성해야합니다.

이미 확인했을 수 있지만 this page은 제가 의미하는 것을 보여줍니다. 나는 많은 사람들이 이런 방식으로 그것을한다고 생각합니다.

일시 정지에 대한 스위치는 다음과 같은 기능을 수행 공지 것을 :

def onClick(event): 
    global pause 
    pause ^= True 

그리고 당신은 당신이 그 기능을 생각하지 않습니다 FuncAnimation에게

fig.canvas.mpl_connect('button_press_event', onClick)