如何让 Matplotlib 事件相互通信?

发布于 2025-01-13 01:04:27 字数 683 浏览 1 评论 0原文

我正在使用 Matplotlib 构建交互式绘图工具,但在并发事件方面遇到问题。具体来说,我想同时使用键盘和鼠标,但我不确定如何在事件处理程序之间传递信息。如何让鼠标事件处理程序知道当前正在按下某个键?我正在尝试使用全局变量,如下所示,但它不起作用。

任何帮助表示赞赏。

import matplotlib.pyplot as plt

SHIFT_PRESSED = False

def on_key_press(event):
    if event.key == 'shift':
        SHIFT_PRESSED = True    

def on_key_release(event):
    if event.key == 'shift':
        SHIFT_PRESSED = False    

def on_click(event):
    print(SHIFT_PRESSED) # never prints True

fig, ax = plt.subplots()
fig.canvas.mpl_connect('button_press_event', on_click)
fig.canvas.mpl_connect('key_press_event', on_key_press)
fig.canvas.mpl_connect('key_release_event', on_key_release)
plt.show()

I'm using Matplotlib to build an interactive drawing tool but I am having trouble with concurrent events. Specifically I'd like to use the keyboard and mouse together, but I'm not sure how to pass information between event handlers. How can I get the mouse event handler to know that a key is currently being pressed? I am trying to use a global variable, as below, but it's not working.

Any help appreciated.

import matplotlib.pyplot as plt

SHIFT_PRESSED = False

def on_key_press(event):
    if event.key == 'shift':
        SHIFT_PRESSED = True    

def on_key_release(event):
    if event.key == 'shift':
        SHIFT_PRESSED = False    

def on_click(event):
    print(SHIFT_PRESSED) # never prints True

fig, ax = plt.subplots()
fig.canvas.mpl_connect('button_press_event', on_click)
fig.canvas.mpl_connect('key_press_event', on_key_press)
fig.canvas.mpl_connect('key_release_event', on_key_release)
plt.show()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文