6

私はmatplotlibを持っていて、次のbutton_press_eventようなものを作成しました:

self.fig.canvas.mpl_connect('button_press_event', self.onClick)

def onClick(self, event)
    if event.button == 1:
        # draw some artists on left click

    elif event.button == 2:
        # draw a vertical line on the mouse x location on wheel click

    elif event.button == 3:
        # clear artists on right click

ホイール クリック ハンドラーを次のように変更できるようになりました

    elif event.button == 2 or (event.button == 1 and event.key == "shift"):
        # draw a vertical line on the mouse x location 
        # on wheel click or on shift+left click 
        # (alternative way if there is no wheel for example)

button_press_eventキーをサポートしておらずkey_press_event、マウス ボタンのクリックもサポートしていないようですが、よくわかりません。

方法はありますか?

4

2 に答える 2

13

キーを押すイベントとキーを離すイベントをバインドして、次のようなことを行うこともできます。

self.fig.canvas.mpl_connect('key_press_event', self.on_key_press)
self.fig.canvas.mpl_connect('key_release_event', self.on_key_release)

...

def on_key_press(self, event):
   if event.key == 'shift':
       self.shift_is_held = True

def on_key_release(self, event):
   if event.key == 'shift':
       self.shift_is_held = False

onClickその後、関数をチェックインできますself.shift_is_held

if event.button == 3:
    if self.shift_is_held:
        do_something()
    else:
        do_something_else()
于 2013-08-09T11:37:35.797 に答える