[英]How to Python Tkinter saving canvas object by dump all canvas object?
[英]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.