私は楕円形の谷に画面を移動これは本当に簡単なコードを書いた:のTkinter:最適化キャンバスオブジェクトの動き
from tkinter import *
""" GLOBAL VARS """
H, W = 400, 600 # default height/width
DELAY = 30 # frame rate in milliseconds
R = 20 # radius of the ball
class App:
def __init__(self, parent):
""" app init """
self.root = parent
self.canvas = Canvas(self.root, bg="white", height=H, width=W)
self.canvas.pack()
self.pos = [W/2, H/2] # starting position
self.speed = [2, 2] # x/y speed
self.canvas.create_oval(self.pos[0] - 20, self.pos[1] - 20, self.pos[0] + 20, self.pos[1] + 20, fill="blue")
self.loop()
def loop(self):
""" main loop """
coords = self.canvas.coords(1)[:2] # actual oval coordinates
if not 0 < coords[0] < W - 20: # the oval bounce off the window
self.speed[0] *= -1
if not 0 < coords[1] < H - 20:
self.speed[1] *= -1
self.canvas.move(1, *self.speed)
self.root.after(DELAY, self.loop)
""" GUI SETUP """
root = Tk()
App(root)
root.mainloop()
問題は、私は、フレームレートを向上しようとすると、楕円形の半分が消滅は、(私が試したということですいくつかのスクリーンショットを撮ることができますが、私がそうすると、1つのフレームでアプリがフリーズし、スクリーンショットで楕円が正しく表示されます。上のコードを実行することで自分自身を試すことができます。
私の質問は:モーションを最適化する方法があるのか、それともTkinterが高いfpsを処理できないという事実を受け入れる必要がありますか?
上記のコードは私にとって完璧に機能します。どのプラットフォームを実行していますか? –
@BryanOakley私はLenovo IdeapadでWindows 10を使用しています。 –