python - 从 tk Canvas 保存对象

标签 python python-3.x canvas tkinter pickle

我正在尝试在我为冒泡/气球绘图所做的程序中创建一个保存功能。我唯一无法开始工作的是保存“工作副本”。就像图纸进行修订更改一样,您无需重做所有工作。只需加载工作副本,然后添加/删除/重新排列气泡。

我正在使用 tkinter 和 canvas。并为气泡创建椭圆形和文本。但我想不出任何保存椭圆/文本对象信息的好方法。 我试图 pickle 整个 Canvas ,但经过一番谷歌搜索后似乎不起作用。 并且在创建时对每个对象进行pickle似乎只保存对象id。 1、2 等。这也不起作用,因为一些气泡将被移动并接收新的坐标。它们也可能有不同的颜色、尺寸等。

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

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

最佳答案

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

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

关于python - 从 tk Canvas 保存对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53571619/

相关文章:

python - 使用 Python 的内置 .csv 模块编写

android - 创建自定义表单 java android

javascript - 如何对 fabricJS 中的所有对象应用来回缩放?

python - 如何解析此报告制表符分隔的响应?亚马逊 MWS

python - 当我将它链接在一起时,为什么这个重复数据删除代码不起作用?

python - 从 Python 中的多个列表创建复杂的嵌套字典

python-3.x - 更改 Pandas 中的栏项目名称

python - 通过批处理文件将多个参数传递给python脚本

python - mysql数据库插入数据时出错

javascript - 只要我使用一次,绘图 Canvas 就可以工作