You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 08:33:16