import sys
import matplotlib
import matplotlib.pyplot as plt
print matplotlib.__version__, matplotlib.get_backend()
def hit(event):
sys.stderr.write('hit\n')
fig = plt.figure()
cid0 = fig.canvas.mpl_connect('key_press_event', hit)
cid1 = fig.canvas.mpl_connect('button_press_event', hit)
print cid0, cid1
plt.show()
Với mã ở trên, tại sao tôi không thể nhấn cả sự kiện nhấn chuột và nhấn sự kiện nhấn phím? Dường như theo thứ tự ở trên chỉ các sự kiện nhấn phím hoạt động, trong khi nếu tôi trao đổi các dòng 10 và 11 xung quanh (sắp xếp cid0 và cid1), thì chỉ các sự kiện chuột hoạt động. I E. bất cứ điều gì tôi kết nối đầu tiên hogs xử lý sự kiện. Đây có phải là giới hạn được xây dựng trong matplotlib hay tôi đang cố kết nối nhiều sự kiện theo cách sai?matplotlib nhiều kết nối đến một trình xử lý sự kiện?
chỉnh sửa với một số thông tin bổ sung: My matplotlib.__version__
là 1.1.0
. Tôi đã thử với các phụ trợ GTKAgg
và TkAgg
có cùng kết quả. Sử dụng python và ipython, có hoặc không có -wthread -pylab
, ipython qtconsole --pylab=inline
, không tạo sự khác biệt. Các id kết nối tôi nhận được là cid0 == cid1 == 6
.
chỉnh sửa 2: Vấn đề của tôi vẫn còn ngày hôm nay với phiên bản matplotlib 1.2.x
và TkAgg
backend, sys.version 2.7.2+ (default, Oct 4 2011, 20:06:09) [GCC 4.6.1]
Mã của bạn làm việc tốt cho tôi. Tôi đã thử nó với "ipython -pylab" theo sau là "chạy mã của bạn" và "python yourcode.py" - cổ vũ. Tôi nghĩ rằng tôi đang sử dụng phụ trợ GTK, nhưng tôi không chắc chắn. Trong điều kiện nào bạn đang chạy? –
thú vị. bạn có thể cho tôi biết 'sys.version',' matplotlib.backends.backend' và 'matplotlib .__ version__' của bạn không? – wim
mỏ là '' 2.7.1+ (r271: 86832, ngày 11 tháng 4 năm 2011, 18:13:53) \ n [GCC 4.5.2] '','' GTKAgg'' và '1.1.0'', tương ứng, nhân tiện. – wim