お世話になります。参考書を読みながら勉強を進めている中、「ウィンドウの中で赤い円を左から右に移動させる」という課題が出てきました。その中でtkinterのafterメソッドを使い、0.01秒毎に関数を実行して円のX座標を1ずつ動かしていくという方法で赤い円が左から右へ動くように見せるというコードの書き方が載っていました。そのコードを実際書いて実行してみたのですが、確かに赤い円がウィンドウ内で左から右へ動くという動作は実行されたのですが、何故かエラーが表示されてしまいます。エラー表示から予想して、afterメソッドに関係していると思いネットで調べてみたのですが、これといった解決法は見つけられませんでした。実行したい動作が一応は実現できているのですが、やはりどこが間違っているのかを知りたいと思っております。コードは参考書に書かれているものそのもので、自分で加えた部分などはありません。よろしくお願いいたします。
コード
Python
1import tkinter as tk 2 3#円の座標 4x=400 5y=300 6 7 8def move(): 9 global x,y 10 #今の円を消す 11 canvas.create_oval(x - 20, y - 20, x + 20, y + 20, fill="white", width=0) 12 #x座標を動かす 13 x=x+1 14 #次の位置に円を描く 15 canvas.create_oval(x - 20, y - 20, x + 20, y + 20, fill="red", width=0) 16 #再びタイマー 17 root.after(10, move) 18 19#ウィンドウを描く 20root=tk.Tk() 21root.geometry("600x400") 22 23 24#キャンバスを置く 25canvas=tk.Canvas(root, width=600, height=400, bg="white") 26canvas.place(x=0, y=0) 27 28#タイマーを設定する 29root.after(10, move) 30 31 32root.mainloop()
エラー表示
invalid command name "2177458294528move"
while executing
"2177458294528move"
("after" script)
invalid command name "2177448788288move"
while executing
"2177448788288move"
("after" script)
invalid command name "2177458294528move"
while executing
"2177458294528move"
("after" script)
invalid command name "2177443823744move"
while executing
"2177443823744move"
("after" script)
invalid command name "2177448776512move"
while executing
"2177448776512move"
("after" script)
invalid command name "2177448776512move"
while executing
"2177448776512move"
("after" script)
invalid command name "2177458121408move"
while executing
"2177458121408move"
("after" script)
invalid command name "2177458121280move"
while executing
"2177458121280move"
("after" script)
invalid command name "2177458121280move"
while executing
"2177458121280move"
("after" script)
invalid command name "2177448376320move"
while executing
"2177448376320move"
("after" script)
invalid command name "2177458120256move"
while executing
"2177458120256move"
("after" script)
invalid command name "2177458756288move"
while executing
"2177458756288move"
("after" script)
invalid command name "2177458755904move"
while executing
"2177458755904move"
("after" script)
invalid command name "2177458294528move"
while executing
"2177458294528move"
("after" script)
invalid command name "2177458276864move"
while executing
"2177458276864move"
("after" script)
invalid command name "2177458755904move"
while executing
"2177458755904move"
("after" script)
invalid command name "2177458294528move"
while executing
"2177458294528move"
("after" script)
invalid command name "2177458119680move"
while executing
"2177458119680move"
("after" script)
invalid command name "2177458276864move"
while executing
"2177458276864move"
("after" script)
invalid command name "2177448788288move"
while executing
"2177448788288move"
("after" script)
invalid command name "2177458276864move"
while executing
"2177458276864move"
("after" script)
invalid command name "2177448678144move"
while executing
"2177448678144move"
("after" script)
invalid command name "2177448664896move"
while executing
"2177448664896move"
("after" script)
回答1件
あなたの回答
tips
プレビュー