在.py文件中:
将matplotlib.pyplot导入为plt
...
PIC = fields.Binary(“图片”)
...
X = [1,2,3,4]
Y = [4,7,9,8]
plt.plot(X,Y)
现在我希望“Pic”在.py文件上显示“plt.plot(x,y)”所显示的数字,我该怎么办?
另外,如果用“Pic”来显示python代码保存在“/home/user/pic.png”中的图片怎么办?
-----------------------------根据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”按钮时,图形将显示在“Pic”上;所有接缝现在还好(另外,如何通过代码决定“图”的大小);
但如果用户再次创建另一条记录并再次单击“plotfig”按钮,他/她将收到警告:“RuntimeError:主线程不在主循环中”;有时警告是“致命的Python错误:GC对象已经被跟踪中止”/“分段错误”,Odoo服务器将自动关闭。
如果我点击“Ctrl + c”来停止Odoo服务器,我也会收到警告:“RuntimeError:主线程不在主循环中”;
我不知道如何解决这些问题。
答案 0 :(得分:0)
你必须:
import matplotlib.pyplot as plt
x=[1,2,3,4]
y=[4,7,9,8]
plt.plot(x,y)
plt.savefig('/home/user/pic.png')
pic_data = open('/home/user/pic.png','rb').read()
self.write({'Pic':base64.encodestring(pic_data )})