【问题标题】:Saving objects from tk canvas从 tk 画布保存对象
【发布时间】:2018-12-01 14:09:56
【问题描述】:

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

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

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

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

【问题讨论】:

  • "接收新坐标...不同颜色、大小等":将此值复制到 dict/tuplelist 中并将此 list 腌制到文件。相关:problem-with-pickle-and-tkinter

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-11
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多