4

ウィジェット (この例ではキャンバス) を描画し、しばらくしてから削除したいと考えています。ユーザーがそれを読むことができるように表示されてから削除されるメッセージのようですが、メッセージを削除するために「OK」などをクリックする必要はありません。

コード例を次に示します。

from tkinter import*

root = Tk()

canvas_1 = Canvas(root, width = 300, height = 300, bg = 'white')
canvas_1.grid(column = 0, row = 0)

canvas_2 = Canvas(canvas_1, width = 200, height = 200, bg = 'blue')
canvas_2.place(x = 50, y = 50)

canvas_1.after(1000, canvas_2.place_forget())

root.mainloop()

問題は、コードでいつ呼び出されても、tkinter がafter()他の何よりも先にメソッドを実行しているように見えることです。その結果、canvas_2決して表示されません。

試してみましtime.sleep()たが、この場合も同じように機能するようです。

前もって感謝します。

4

1 に答える 1

6

問題は、あなたのafter発言が実際にすぐcanvas_2に忘れられる原因になっていることです. これは、() が Python に(1000 ミリ秒で実行するのではなく) 関数を実行するように指示しているためです。() を削除すると、準備完了です。幸運を祈ります。place_forget

これを置き換えます:

canvas_1.after(1000, canvas_2.place_forget())

これとともに:

canvas_1.after(1000, canvas_2.place_forget)
于 2012-06-19T15:36:16.293 に答える