如何禁用PyQtGraph图例的鼠标拖动功能?
解决PyQtGraph图例可拖动的问题
你需要直接获取图例的GraphicsWidget实例,禁用它的鼠标交互功能。addLegend()返回的LegendItem本身不直接处理鼠标事件,实际交互由其内部的widget部件负责,通过禁用该部件的交互即可阻止拖动。
修改后的代码如下:
import pyqtgraph as pg widget = pg.plot() # Disable interactivity widget.setMouseEnabled(x=False, y=False) # Disable mouse panning & zooming widget.hideButtons() # Disable corner auto-scale button widget.getPlotItem().setMenuEnabled(False) # Disable right-click context menu # 添加图例并禁用拖动 legend = widget.addLegend() legend.widget.setEnabled(False) # 彻底禁用图例部件的所有交互,包括拖动 widget.plot([1, 3, 2, 5, 4], name="Example plot") if __name__ == "__main__": pg.exec()
补充说明
- 调用
legend.widget.setEnabled(False)会关闭该部件的所有鼠标交互逻辑,不仅能阻止拖动,也会禁用点击等其他操作,完全符合你禁用所有交互的需求。 - 如果仅需禁用拖动而保留其他交互,可以单独重写图例部件的鼠标事件,但这种场景较少,直接禁用全部交互更简洁高效。
内容的提问来源于stack exchange,提问作者TACD
相关产品推荐
相关产品推荐

