0
我正在用Tkinter維護用Python編寫的圖形分析應用程序。它可選擇將其結果顯示在一個可滾動的電子表格中,我使用Canvas小部件創建該電子表格。但是,它似乎有一些可擴展性問題。當主畫布太大時,試圖銷燬顯示結果的窗口會導致程序停止響應並需要被終止。當顯示的數據較少時,我可以正常銷燬它。這是Tkinter/large Canvi的一個已知問題嗎?我可以做任何事情來防止這些凍結?Python/Tkinter:用大畫布銷燬窗口會導致程序停止響應
#Function being called to destroy window
def justexit():
savepopup.destroy() #Destroy the popup asking to save (that called this function)
deleteall() #Destroy canvi and their contents
popup.destroy() #Destroy the window containing all the canvi
def deleteall():
for i, itemset in enumerate(items): #Items stores lists containing every item added to the canvi
for item in itemset:
canvi[i].delete(item)
canvi[i].destroy()
而我的估計是有點關閉。實際上有數以萬計的項目在發揮作用,但我不會指望這種放緩是如此明顯。
是的,我似乎刪除項目之前刪除canvi ...我沒想到我有超過1000個項目上。 – dpitch40
@ dpitch40:你的意思是「似乎正在刪除」?要麼是在摧毀畫布之前明確刪除它們,要麼是不是。 1000件物品在最壞情況下不應造成超過一秒或兩秒的延遲。是否有可能不斷創建對象並隱藏舊對象而不實際刪除它們?這通常是在有人遇到這個問題時發生的。 –
我保存在每個畫布上創建的所有項目(文本和線條),然後在刪除窗口時遍歷它們全部存儲的位置,並在銷燬畫布本身之前調用畫布的每個刪除方法。但是,我已經確定它在銷燬窗戶本身時掛起,而不是罐頭或任何東西。我可以很好地運行你的代碼。我會添加一些關於銷燬canvi的代碼。 – dpitch40