大澤文孝氏著「いちばんやさしいPython入門教室」を
読んでPythonを勉強しています。
本に示されているサンプルを写して実行し、
動作を確かめていたのですが、
図形がCanvas上で往復動作を繰り返す下記のプログラム
"example07-05-01.py"(200頁に掲載)から
描画を重ねるごとに動作が重くなるようになりました。
コーディングによって、これを解消することは可能でしょうか?
Python
1# coding:utf-8 2import tkinter as tk 3 4# 円の座標と半径 5x = 400 6y = 300 7# 移動量 8dx = 1 9 10def move(): 11 global x, y, dx 12 # いまの円を消す 13 canvas.create_oval(x - 20, y - 20, x + 20, y + 20, fill="white", width=0) 14 # X座標を動かす 15 x = x + dx 16 # 次の位置に円を描く 17 canvas.create_oval(x - 20, y - 20, x + 20, y + 20, fill="red", width=0) 18 # 端を超えていたら反対向きにする 19 if x >= canvas.winfo_width(): 20 dx = -1 21 if x <= 0: 22 dx = +1 23 # 再びタイマー 24 root.after(10, move) 25 26# ウィンドウを描く 27root = tk.Tk() 28root.geometry("600x400") 29 30# キャンバスを置く 31canvas =tk.Canvas(root, width =600, height =400, bg="white") 32canvas.place(x = 0, y = 0) 33 34# タイマーを設定する 35root.after(10, move) 36 37root.mainloop()
実現したいこと
プログラム開始直後の一定のスピードを保つように変えたいです。
このプログラムを派生させていろいろと試したいのですが、
だんだん動きの鈍くなるものは作りたいプログラムではありません。
パソコンのメモリを増設するなどのハード面からの解消方法ではなく、
コーディングによって解決できるのであれば、
その方法をご教示いただきたいと思います。
自分で試したこと
「Python オブジェクト 解放」でキーワード検索をおこなってみましたが、
自分で理解して解決することはできませんでした。
また、本ケースの円が動くプログラムが掲載されたChapter7を
最後まで読み進めば上位例が示されるかと思ったのですが、
サンプルが複雑になるに従って重くなるのが早まるだけでした。
利用している環境
OS: Windows7 Professional バージョン6.1
version: Python 3.6.4 32bit
IDE: IDLE(Python 3.6 32-bit)
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/29 12:17