2011-08-01 24 views
10
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__1.1.0. Tôi đã thử với các phụ trợ GTKAggTkAgg 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.xTkAgg backend, sys.version 2.7.2+ (default, Oct 4 2011, 20:06:09) [GCC 4.6.1]

+0

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? –

+0

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

+0

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

Trả lời

0

tôi đã cố gắng mã của bạn, và cả những hành động (chuột và bàn phím) đã làm các trick: tôi đã có " nhấn "mọi lúc.

Tôi sử dụng ubuntu 10.10, python 2.6.6 và matplotlib 0.99.3, tất cả được cài đặt bằng synaptic (không phải bằng cách tải xuống phiên bản mới nhất và chạy setup.py, vì điều này đã dẫn tôi vào một số vấn đề lớn trước đó).

Tôi cũng đã cài đặt python2.6-dev, vì điều này thêm phần đầu ".h" bị thiếu trong hầu hết các trường hợp. .

Hope this helps

+0

có, tôi đã có nó làm việc trong quá khứ trước đây với các phiên bản synaptic. – wim

+0

Bạn đang sử dụng chương trình phụ trợ nào? Tôi chủ yếu là có hàng nhập khẩu phụ trợ rõ ràng, chẳng hạn như: từ matplotlib.backends.backend_gtkagg nhập khẩu FigureCanvasGTKAgg \t \t như Canvas nhưng khi không quy định, bạn sử dụng mặc định từ một tập tin: /home/project29/.matplotlib/.matplotlibrc backend : GTKAgg – Louis

+0

(quá muộn để hoàn tất chỉnh sửa trước đó) - Ngoài ra, hãy xem http://matplotlib.sourceforge.net/users/customizing.html – Louis

Các vấn đề liên quan