保存Tkinter画布对象

猫猫

如何保存Canvas对象,以便以后进行修改(删除工程图,添加工程图等)?

我尝试了泡菜,但是给了我一个错误: pickle.PicklingError: Can't pickle 'tkapp' object: <tkapp object at 0x024A7678>

canvas = Canvas()

canvas.create_oval(10, 10, 80, 80, outline="red", fill="green", width=10)

file_name = "test_file"

with open(file_name, 'wb') as file_object:
    pickle.dump(canvas, file_object)
en_Knight

可能有一个更直接的解决方案,但是我通常通过保存指示绘图的对象,并在每次会话时将它们传递给新的画布来解决。无论如何,这通常都适合设计良好的基础架构-它将图像与数据分开。

例如,无论如何,您可能仍要分别跟踪椭圆,如下所示:

class Oval:

    def __init__( self, x , y ):
        self.x = x 
        self.y = y

   def draw_to_canvas(self,canvas):
       canvas.create_oval( ..., ... )

newoval = Oval(0,0)
pickle.dump(newoval,myfile)

我不确定您需要多久腌制一次真正的tkinter画布-制作其中一个新画布很容易。您需要的是画布上对象的保存版本,您可以通过腌制为跟踪数据而创建的自定义类来获得该版本。在我看来,Tkinter通常不够坚固,无法充当数据结构和画布,同时兼具两者的作用似乎也不是一个非常优雅的设计。

当然,如果要制作绘图引擎,则腌制椭圆形列表或分层的树状容器可能更有效。都是针对特定用途的

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

保存Tkinter画布对象

来自分类Dev

如何禁用Tkinter画布对象

来自分类Dev

Tkinter使用删除从画布上删除对象

来自分类Dev

Python; tkinter; 画布对象和事件

来自分类Dev

Python tkinter 在画布上创建对象

来自分类Dev

在tkinter画布对象的查看区域周围创建“障碍”

来自分类Dev

Tkinter重塑画布不适用于面向对象

来自分类Dev

如何检测两个画布对象Tkinter的碰撞

来自分类Dev

用颜色填充Tkinter画布对象之间的空间

来自分类Dev

在tkinter画布对象的查看区域周围创建“障碍”

来自分类Dev

在tkinter画布上动态创建/删除绘制对象?

来自分类Dev

无法在我的 Tkinter 画布中显示我的海龟对象

来自分类Dev

画布内的 Python Tkinter 画布

来自分类Dev

Python Tkinter刷新画布

来自分类Dev

清理Tkinter画布的问题

来自分类Dev

如何使Tkinter画布更新?

来自分类Dev

Python Tkinter画布几何

来自分类Dev

Tkinter画布图像错误

来自分类Dev

Python Tkinter刷新画布

来自分类Dev

tkinter固定画布大小

来自分类Dev

Tkinter:使画布可拖动

来自分类Dev

Tkinter 画布绘制windrose

来自分类Dev

如何关闭 tkinter 画布?

来自分类Dev

Python,Tkinter:如何使用其ID或标签获取所有画布对象的句柄?

来自分类Dev

当我只知道坐标时,如何在 tkinter 画布上移动对象?

来自分类Dev

如何使用从文件浏览器获得的路径在 tkinter 的画布对象中显示图像

来自分类Dev

如何在 Tkinter 画布上一次移动多个对象?

来自分类Dev

使用 Pillow 保存 tkinter 画布会保存无扩展名的文件,但不会指定扩展名

来自分类Dev

如何保存压缩的画布