1

ポケモンの赤い戦闘シーンを再現しようとしていますが、最初のキャラクター (善人) と 2 番目 (悪人) の間に 5 秒の遅延が必要です。time.sleep() メソッドを試してみましたが、プログラムを起動する前に 5 秒 (スリープ時間) 待つだけです。

#Add Person
label = Label(image=diglett, bg= "white")
label.place(x=20, y=80)
#Add Enemy (I want a 5 second delay here...)
label2 = Label(image=bad_guy, bg= "white")
label2.place(x=200, y=20)
label2.after(100)
bad_guy_name = Label(root, text="Cabbage", bg='white')
bad_guy_name.place(x=35, y=30)

これに関する別のスタック オーバーフローの投稿を見たことがありますが、これをコードに実装する方法がわかりません: Time delay Tkinter

ありがとう

4

1 に答える 1

3

ラベルを追加または変更する関数を作成し、次のように実行するように要求しますafter

まず、関数を作成します。

def showLabel():
    label = Label(root, ...)
    label.place()

次に、次の方法でメイン コードから呼び出しますafter

#Add Enemy (I want a 5 second delay here...)
root.after(5000, showLabel)

それはあなたの質問に直接答えますが、他にもいくつかの問題があります。1 つは、呼び出してから同じウィジェットをpack呼び出しても効果がありません。ウィジェットは、またはのいずれかによってのみ管理でき、最後に使用したものが「勝利」します。placepackpackplacegrid

を使用している場合place、5 秒で何かを配置すると、多かれ少なかれ期待どおりに動作するはずです。を使用する場合はpack、ウィンドウのサイズが変更される可能性があり、オプションがないと親ウィンドウの下部に表示されることに注意してください。

最後に、実際に何をしようとしているのかによっては、すぐにラベルを作成して梱包することを検討することをお勧めしますが、ラベルは空白のままにしておきます。次に、5 秒後にテキストを空白文字列から別の文字列に変更できます。

于 2015-02-01T15:00:27.177 に答える