前提・実現したいこと
メモリリークの対処法を聞きたい。
ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
今現在Pythonを学んでいる学生です。
質問内容は円を作成し、動かすオブジェクトを作っているのですが前のオブジェクトを削除する方法を教えてほしいです。
学習本を読み、オブジェクトを適当な変数に保存し、新しいオブジェクトを作る前にdeleteで削除するという対応を調べたのですが、どの部分にデリートを挿入するのかなどが記載されていなかったため質問いたしました。
発生している問題・エラーメッセージ
円を一つ作成して動かす(動かす処理は前の円を白にして見え無くし、消したように見せているだけです)だけなら問題ないのですが複数の円を作成し動かすとメモリリークが発生しプログラムがうまく動きません。
該当のソースコード
python
1ball=[{"x":400,"y":300,"dx":1,"dy":1,"color":"red"}, 2 {"x":200,"y":100,"dx":-1,"dy":1,"color":"green"}, 3 {"x":100,"y":200,"dx":1,"dy":-1,"color":"blue"} 4 ] 5 6円を動かす処理ですballに入っているリストの数だけ円を作成しています。 7def move(): 8 global ball 9 for b in ball: 10 11 canvas.create_oval(b["x"]-20,b["y"]-20,b["x"]+20,b["y"]+20,fill="white",width=0) 12 13 b["x"]=b["x"]+b["dx"] 14 b["y"]=b["y"]+b["dy"] 15 16 canvas.create_oval(b["x"]-20,b["y"]-20,b["x"]+20,b["y"]+20,fill=b["color"],width=0) 17 18 if b["x"]>=canvas.winfo_width(): 19 b["dx"]=-1 20 if b["x"]<=0: 21 b["dx"]=1 22 if b["y"]>=canvas.winfo_height(): 23 b["dy"]=-1 24 if b["y"]<=0: 25 b["dy"]=1 26 27 28 root.after(10,move)
Python
試したこと
学習本を読んだ。ネットで検索したがいまいち理解できなかった。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
IDLEを使っています。pythonのバージョンは3.9です。
回答3件
あなたの回答
tips
プレビュー