這裏編程noob。我試圖在PyQt4 GUI中使用matplotlib小部件。該部件與matplotlib的example for qt類似。使用matplotlib中的PyQt
在某些時候,用戶需要點擊劇情,我認爲像ginput()會處理的情節。但是,這不起作用,因爲該數字沒有經理(見下文)。請注意,這與another question非常相似,但它從來沒有得到答案。
AttributeError: 'NoneType' object has no attribute 'manager'
Figure.show works only for figures managed by pyplot, normally created by pyplot.figure().
我假設「通常」有一種解決方法。
另一種簡單的腳本來演示:
from __future__ import print_function
from matplotlib.figure import Figure
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 5, 0.1)
y = np.sin(x)
# figure creation by plt (also given a manager, although not explicitly)
plt.figure()
plt.plot(x,y)
coords = plt.ginput() # click on the axes somewhere; this works
print(coords)
# figure creation w/o plt
manualfig = Figure()
manualaxes = manualfig.add_subplot(111)
manualaxes.plot(x,y)
manualfig.show() # will fail because of no manager, yet shown as a method
manualcoords = manualfig.ginput() # comment out above and this fails too
print(manualcoords)
一樣受歡迎pyplot是(我不能很難找到沒有它的答案),它似乎並不具有GUI工作時發揮好。我認爲pyplot只是OO框架的一個包裝,但我想我只是一個noob。
我的問題是這樣的: 有沒有辦法將pyplot附加到matplotlib.figure.Figure的實例? 有沒有簡單的方法將管理人員附加到圖上?我在matplotlib.backends.backend_qt4agg中發現了new_figure_manager(),但無法使其正常工作,即使它是正確的解決方案。
非常感謝,
詹姆斯
你想處理按鈕單擊事件? – zhangxaochen
具體而言,是的;我用canvas.connect()函數解決了這個問題,儘管它沒有幫助我理解。通常,我希望我的嵌入式matplotlib小部件具有pyplot的方法(gingput等)。 – James