正在保存来自 tk canvas 的对象

Saving objects from tk canvas

我正在尝试在我为 bubbling/ballooning 绘图所做的程序中创建一个保存功能。我唯一无法开始工作的是保存 "work copy"。就像绘图得到修订更改一样,您不需要重做所有工作。只需加载工作副本,然后 add/remove/re-arrage 个气泡。

我正在使用 tkinter 和 canvas。并为气泡创建椭圆和文本。但我想不出任何保存 oval/text 对象信息的好方法。 我试图腌制整个 canvas,但在谷歌搜索后似乎无法正常工作。 并且在创建时腌制每个对象似乎只保存对象 ID。 1、2 等。这也行不通,因为一些气泡会移动并接收新坐标。它们也可能有不同的颜色、尺寸等。

在我的下一个方法中,我正在考虑将整个 "can.create_oval( x1, y1, x2, y2, fill = fillC, outli...." 作为字符串保存到 txt 中,并使用 eval()

重新创建函数

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

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

  • find_all - return canvas
  • 上所有对象的对象 ID 的有序列表
  • type - 将 return 对象的类型作为字符串("rectangle"、"circle"、"text" 等)
  • itemconfig - returns 是包含对象所有配置值的字典。字典中的值是一个值列表,其中包括索引 3 处选项的默认值和索引 4 处的当前值。您可以使用它来仅保存已从默认值显式更改的选项值。
  • gettags - returns 与对象关联的标签列表