MEP23: GUI 창당 여러 그림 #
상태 번호
논의
브랜치 및 풀 리퀘스트 #
이전 작업 - https://github.com/matplotlib/matplotlib/pull/2465 삭제하려면
초록 #
동일한 아래에 여러 그림을 그룹화할 수 있는 가능성 추가
FigureManager
자세한 설명 #
현재 구조에서 모든 캔버스에는 자체 창이 있습니다.
이것은 대부분의 사용 사례에서 원하는 작업 방법이며 계속해서 그렇게 될 수 있습니다.
동시에 너무 많은 그림이 열려 있는 경우 같은 창에서 그룹화할 수 있는 것이 바람직합니다[참조]( https://github.com/matplotlib/matplotlib/issues/2194 ).
제안된 솔루션은 FigureManagerBase
둘 이상의 Canvas
. MultiFigure 동작이 필요한 경우 설정 매개변수 rcParams["backend.multifigure"]
제어 .
메모
제안된 솔루션은 [MEP22]( https://github.com/matplotlib/matplotlib/wiki/Mep22 )가 이미 제자리 에 있다고 가정한다는 점에 유의해야 합니다 . 의 실제 구현으로 Toolbar
인해 캔버스 간에 전환하기가 매우 어렵기 때문입니다.
구현 #
첫 번째 구현은 Notebook을 캔버스 컨테이너로 사용하여 GTK3에서 수행됩니다.
FigureManagerBase
#
다음과 같은 새로운 방법을 추가합니다
add_canvas
: 기존FigureManager
개체 에 캔버스를 추가하려면remove_canvas
: 오브젝트에서 캔버스를 제거하려면FigureManager
마지막 캔버스인 경우 파괴됩니다.move_canvas
: 캔버스를 한 캔버스에서FigureManager
다른 캔버스로 이동합니다.set_canvas_title
: 특정 캔버스 컨테이너와 관련된 제목을 변경하려면get_canvas_title
: 특정 캔버스 컨테이너와 관련된 제목을 가져오려면get_active_canvas
: 전경에 있고 gui 이벤트가 적용되는 캔버스를 가져옵니다. 활성 캔버스가 개체 에서 호출set_active_canvas
될 때 정의되기 때문에 없습니다 .show
Canvas
new_figure_manager
#
새 그림을 포함할 항목 을 제어하기 FigureManager
위해 추가 선택적 매개변수인 figuremanager 가 추가되고 이 매개변수 값이 에 전달됩니다 new_figure_manager_given_figure
.
new_figure_manager_given_figure
#
figuremanager 매개변수가 주어지면 새 개체를 생성하는 대신 이 개체
FigureManager
가 사용됩니다.If
rcParams['backend.multifigure']
is True:FigureManager
새 개체를 만드는 대신 마지막 개체가 사용됩니다.
이전 버전과의 호환성 #
MultiFigure 속성 이 표시되려면 사용자가 설정을 직접 활성화해야 합니다.rcParams['backend.multifigure'] =
True
아직 MultiFigure 매직 FigureManagerBase
을 구현하지 않았더라도 현재 구조를 준수하는 백엔드에 대해 이전 버전과 호환되어야 합니다 .
대안 #
를 수정하는 대신 FigureManagerBase
병렬 클래스를 추가하여
. 이것은 맞춤형 백엔드에 문제가 없음을 보증할 뿐만 아니라 코드를 더 크게 만들고 유지 관리할 항목을 더 많이 만듭니다.rcParams['backend.multifigure'] = True