簡體   English   中英

保存Tkinter畫布對象

[英]Saving Tkinter Canvas object

如何保存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)

也許有一個更直接的解決方案,但是我通常通過保存指示繪圖的對象,並在每次會話時將它們傳遞給新的畫布來解決。 無論如何,這通常都適合設計良好的基礎架構-它將圖像與數據分開。

例如,無論如何,您可能仍要分別跟蹤橢圓,如下所示:

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通常不夠堅固,無法充當數據結構和畫布,也不能兼具兩者的作用。

當然,如果要制作繪圖引擎,則腌制橢圓形列表或分層的樹狀容器可能更有效。 都是針對特定用途的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM