2017-09-08 33 views
0

我使用Ipthon3繪製一些數據與默認matplotlib後端'TKAgg'和virtualenv。我有一個plot_script繪製我的數據顯示它在一個新的窗口,它的作品一段時間。然後有點隨機它,當我使用Tab來自動完成一個語句時,它會拋出鏈接圖片中顯示的錯誤消息。當我使用Agg backend時,它可以正常工作,但由於我需要檢查數據(放大等),因此變得非常乏味。在IPython + matplotlib上的自動完成會導致'RuntimeError:主線程不在主循環中'

Screenshot of the Ipython Window

我意識到,我可能不理解線程是如何工作的,但不應該有同時使用在plot_script是非常簡單的一個功能的方式來獲得一個GUI窗口。基本上,我打電話與plot_script.plot_something(pd.DataFrame)功能,該地塊diplayed:

from matplotlib import pyplot as plt 

def plot_something(data): 
    fig, ax = plt.subplots(2,2) 
    .... # Plot something 
    fig.savefig()  
    plt.show() 

    plt.close(fig) 
    fig.clear()  

如何將我的繪圖移動到主循環,這是一個問題的IPython?

回答

0

您可能需要激活正確的matplotlib & tk eventloop。在一般情況下,可以使用%gui magic%gui tk完成此操作,對於matplotlib,可以通過%matplotlib magic完成一些額外的設置,可能在您的情況下使用%matplotlib tk

還有一些其他庫可以觸發這種問題,如果還沒有答案,特別是使用OpenCV和終端IPython可以使主線程恐慌,但不能以可重現的方式,不能調試和修復然而。

如果使用魔法不能修復它,請隨時在IPython追蹤器上打開一個錯誤。

+0

感謝您的幫助。所以現在我在啓動時使用'%gui tk'和'%matplotlib tk'。必須習慣不同的行爲;)。如果直到本週結束時我才注意到錯誤,或者如果您的第二條評論是正確的,我會接受您的答案。 – philster

+0

可悲的是我不能upvote ....從來沒有得到超過15rep我猜;) – philster

+0

沒有後顧之憂,高興的是有任何幫助。提示:註冊其他堆棧交換站點,如果您登錄了足夠多的站點,他們會爲您提供100個代表。 – Matt

相關問題