:PLT「matplotlib.pyplot」によって作成されたFigureをOdooに保存するにはどうすればよいですか? .pyファイルに
として
輸入matplotlib.pyplot ...。
Pic = fields.Binary( 'Picture')
...。
X = [1,2,3,4]
Y = [4,7,9,8]
plt.plot(x、y)を
今「が欲しいですPic "で" plt.plot(x、y) "が.pyファイルに作成した図形を表示するにはどうすればよいですか?
追加で、 "/home/user/pic.png"に保存された画像をpythonコードで表示するにはどうすればいいですか?
-----------------------------TrầnKhảiHoàngのアドバイスに従って更新---------- ---------------------------------
の.pyコード:今すぐ
@api.multi
def plotfig(self,cr):
x=[1,2,3,4]
y=[4,7,9,8]
plt.plot(x,y)
tem='/tmp/%s.png' % cr['uid']
plt.savefig(tem)
pic_data=open(tem,'rb').read()
self.write({'Pic':base64.encodestring(pic_data)})
os.remove(tem)
ユーザーがレコードを作成し、 "plotfig"ボタンをクリックすると、Figureが "Pic"に表示されます。すべての縫い目は今まではOKです(さらに、コードによって "Fig"のサイズをどのように決める必要がありますか)。
ユーザが別のレコードを作成して "plotfig"ボタンを再度クリックすると、警告メッセージが表示されます: "RuntimeError:メインスレッドはメインループにありません"; 「致命的なPythonエラー:GCオブジェクトは既に異常終了しました」/「セグメンテーション・フォールト」という警告が表示され、Odooサーバーが自動的にシャットダウンします。
「Ctrl + c」をクリックしてOdooサーバーを停止すると、「RuntimeError:メインスレッドがメインループにありません」という警告も表示されます。
これらの問題の解決方法はわかりません。
を画像
こんにちは、tempfileを使って新しい画像ファイルを作成しようとしています: 'pic_file_name = tempfile.NamedTemporaryFile(delete = False、suffix = '。png')' –
よろしくお願いします。最近、私は以下のコードを追加してこの問題を解決しました:import matplotlib; matplotlib.use( 'Agg');ありがとうございました! – vx2008