如何让PyQt5窗口中嵌入的matplotlib工具栏支持左右侧边停靠
问题原因
核心原因是Matplotlib的NavigationToolbar2QT类在初始化时,默认仅设置了顶部、底部两个允许停靠的区域,因此即使你手动指定初始停靠在左侧,工具栏被拖出后也无法再次停靠到左右侧边区域。
解决步骤
- 补充导入QtCore模块
你的原代码未导入QtCore,需先修改导入语句:
from PyQt5 import QtCore, QtWidgets
- 调整工具栏允许停靠的区域
在初始化工具栏的代码后,新增一行设置允许停靠到所有区域即可:
self.toolbar = NavigationToolbar(self.canvas, self) # 新增:允许工具栏停靠在顶部、底部、左侧、右侧所有区域 self.toolbar.setAllowedAreas(QtCore.Qt.AllToolBarAreas) # 保留你的初始左侧停靠设置 self.addToolBar(QtCore.Qt.LeftToolBarArea, self.toolbar)
如果不需要开放所有停靠区域,可自行组合参数,比如仅开放上下+左侧停靠:
self.toolbar.setAllowedAreas( QtCore.Qt.TopToolBarArea | QtCore.Qt.BottomToolBarArea | QtCore.Qt.LeftToolBarArea )
修改后即可正常将工具栏拖放到左右侧边区域停靠。
内容的提问来源于stack exchange,提问作者user9413641
相关产品推荐
相关产品推荐

