ここでいくつかのコードをリファクタリングして、より管理しやすく、読みやすいものにしようとしています。私は現在、私には非常に単純に見えるこの巨大な方法に固執しています、そして私はそれをもう分解できるかどうかを見たいです:
def moveCircle(self, event):
if event.keysym == "Up":
self.canvas.move("circle", 0, -5)
self.canvas.move("text", 0, -5)
self.y1 -= 5
self.y2 -= 5
elif event.keysym == "Down":
self.canvas.move("circle", 0, 5)
self.canvas.move("text", 0, 5)
self.y1 += 5
self.y2 += 5
elif event.keysym == "Left":
self.canvas.move("circle", -5, 0)
self.canvas.move("text", -5, 0)
self.x1 -= 5
self.x2 -= 5
elif event.keysym == "Right":
self.canvas.move("circle", 5, 0)
self.canvas.move("text", 5, 0)
self.x1 += 5
self.x2 += 5
self.canvas.update
ユーザーが矢印キーの1つを押すたびに同じ値を移動する、「円」と「テキスト」の2つのキャンバスオブジェクトがあります。変わるのは方向だけです(ええと)。x1、x2、y1、およびy2のインスタンス変数は、この質問にとって重要ではない目的でプログラムで使用されます(ご存知のとおり、これらは必要です。このようにデクリメントされます)。私が望んでいるのは、魔法のself.canvas.move("circle" && "text", 0, 5)
ようなものか、そのようなばかげたものです。(明らかに、そのコマンドは存在しませんが、これを行うためのより簡潔な方法があるのか、それとも私が夢中になっているだけなのか疑問に思っています)
記録のために、私も試しself.y1 = self.y2 -= 5
てみましたが、コンパイラーがフィットをスローしたので、それは残念でした。複数の値を同時に同じ量だけインクリメントおよびデクリメントする方法を知っている人はいますか?それは超クールな豆でしょう。