私は多少の量を入力する小さなゲームに取り組んでいます。 3秒後に、カラーフレームの順序を呼び出すように促すプロンプトが表示されます。Pythonパックは、メソッドが完了した後にのみ有効になります。
カウントダウン後のイベントはまだ実装されていません(問題はありません)。
私は、入力フィールドと、確認ボタンを非表示にする方法を持っている色が表示され、カウントダウンん:
def startgame(colornumber): #colornumber is the amount of frames
...
colors=[] #array of "Frame" elements
#loop that creates the colored frames
for i in range (0, colornumber):
colors.append(Frame(window, width=60, height=60, background=randomcolor()))
colors[i].pack(side=LEFT)
#randomcolor() is a method that returns a random color string
#like "white" or "red"
#countdown loop
for i in range(0, 3):
time.sleep(1) #do nothing for 1 second
label.configure(text="ASD") #Count down
print(str(3-i))
label.configure(text="What was the order? Click on the colors to choose")
ボタンはそうのような関数を呼び出すための:
colorNumberInput = Entry(window)
colorNumberInput.pack()
buttonConfirmNumber = Button(window, ..., command=lambda: startgame(int(colornumberInput.get()))
buttonConfirmNumber.pack()
を何らかの理由で、color[i].pack(side=LEFT)
ステートメントの効果は、メソッドの実行が終了した後にのみ発生します。つまり、カウントダウンループが終了した後です。その結果、カウントダウンの後ではなく、カウントダウン後にカラーが表示されます。私はprint
ステートメントをカラーフレームを作成するループに入れてみましたが、とにかく実行します。
なぜpack(element)
は、呼び出されたメソッドが終了した後にのみウィジェットを表示しますか?この問題を回避できる方法はありますか?
"十分に良い"場合もありますが、 'time.sleep' +' tkinter'はほとんど常にひどいです。全く応答しないGUIで3秒を費やすことは、非常にユーザーに敵対しています。 – ShadowRanger
@ ShadowRanger:引数がありません。 –