从tk画布保存对象

时间:2018-12-01 14:09:57

标签: python python-3.x canvas tkinter pickle

我正在尝试在程序中做一个保存功能,以使图形起泡/膨胀。我唯一无法工作的是保存“工作副本”。就像工程图的版本更改一样,您无需重做所有工作。只需加载工作副本,然后添加/删除/重新排列气泡即可。

我正在使用tkinter和canvas。并创建椭圆形和气泡文字。但是我想不出任何好的方法来保存椭圆形/文本对象中的信息。 我试图给整个画布腌制,但是经过一些胶凝处理后似乎无法使用。 腌制每个对象时,似乎只能保存对象ID。 1、2等。由于气泡会移动并接收新的坐标,所以这也将不起作用。它们的颜色,尺寸等也可能不同。

在我的下一个方法中,我正在考虑将整个“ can.create_oval(x1,y1,x2,y2,fill = fillC,outli ....”)保存为txt的字符串,并使函数重新创建一个带有eval()

有人对如何解决这个问题有很好的建议吗?

1 个答案:

答案 0 :(得分:0)

没有内置的方法可以保存和恢复画布。但是,画布具有可用于获取有关画布上项目的所有信息的方法。您可以使用这些方法将该信息保存到文件中,然后读回该文件并重新创建对象。

  • find_all-将返回画布上所有对象的对象ID的有序列表
  • type-将对象的类型返回为字符串(“矩形”,“圆形”,“文本”等)
  • itemconfig-返回包含对象的所有配置值的字典。词典中的值是一个值列表,其中包括索引3处的选项的默认值和索引4处的当前值。您可以使用此选项仅保存已从默认值显式更改的选项值。 li>
  • gettags-返回与对象关联的标签列表