MEP23:每个图形用户界面窗口有多个图形¶
分支和请求¶
前期工作 -https://github.com/matplotlib/matplotlib/pull/2465 To-delete
详细描述¶
在当前结构下,每个画布都有自己的窗口。
对于大多数用例,这是并可能继续是所需的操作方法。
有时,当同时打开的数字太多时,最好能将这些数字分组在同一窗口下。 [see] (https://github.com/matplotlib/matplotlib/issues/2194)。
建议的解决方案修改 FigureManagerBase
包含和管理多个 canvas
. 设置参数 rcParams["backend.multifigure"]
控制何时 MultiFigure 行为是需要的。
Note
需要注意的是,建议的解决方案假定 [MEP22] (https://github.com/matplotlib/matplotlib/wiki/mep22)已经到位。这仅仅是因为 Toolbar
很难在画布之间切换。
实施¶
将在画布中使用kgt3实现。
FigureManagerBase
¶
将添加以下新方法
add_canvas
:将画布添加到现有的FigureManager
对象remove_canvas
:从FigureManager
对象,如果是最后一个对象,它将被销毁move_canvas
:移动画布FigureManager
到另一个。set_canvas_title
:更改与特定画布容器关联的标题get_canvas_title
:获取与特定画布容器关联的标题get_active_canvas
:获取前景中受GUI事件影响的画布。没有set_active_canvas
因为活动画布是在show
在A上调用Canvas
对象。
new_figure_manager
¶
控制哪个 FigureManager
将包含新的数字,一个额外的可选参数 形象经理 将添加,此参数值将传递给 new_figure_manager_given_figure
new_figure_manager_given_figure
¶
- 如果 形象经理 参数给定时,此
FigureManager
将使用对象而不是创建新对象。 - 如果
rcParams['backend.multifigure']
是真的:最后FigureManager
将使用对象而不是创建新对象。
向后兼容性¶
对于 MultiFigure 属性要可见,用户必须直接激活它们设置 rcParams['backend.multifigure'] = True
它应该是向后兼容的后端坚持电流 FigureManagerBase
结构,即使它们没有实现 MultiFigure 还没有魔法。
选择¶
而不是修改 FigureManagerBase
可以添加一个并行类来处理 rcParams['backend.multifigure'] = True
. 这将保证定制后端不会有任何问题,但也会使代码更大,需要维护的东西更多。