Ich versuche, ein Programm zu machen, wenn es beginnt, ein GUI-Fenster angezeigt wird, und es gibt einen Countdown von 5 bis 0.Mein Countdown-Programm funktioniert nicht gut
Dies ist der Code:
number=5
from tkinter import *
class application(Frame):
def __init__(self, master):
Frame.__init__(self, master)
self.grid()
self.create_widget()
def create_widget(self):
global number
self.lbl1=Label(self, text=number)
self.lbl1.grid(row=0, column=0, sticky=W)
for I in range(5):
number=number-1 #the countdown
root.after(1000, self.update)
def update(self):
global number
self.lbl1.configure(text=number)
Wenn das Programm startet, die Zahl 5 erscheint, und schaltet sich plötzlich auf 0
Kann mir jemand sagen, was das Problem in meinem Code ist?
Es ist kein Problem. Ihre 'for'-Schleife läuft sehr schnell (innerhalb von Millisekunden), so dass Sie die Label-Aktualisierung nicht wirklich sehen. – MattDMo
Sie haben eine Klasse. Warum verwenden Sie eine globale Variable? – zondo
Sie sollten die 'Zahl' in Ihrer' update' Methode verringern. Sie sollten die "for" -Schleife überhaupt nicht haben. Rufen Sie stattdessen 'root.after (1000, self.update)' einmal in 'create_widget' und einmal in' update' auf (so dass jedes 'update' eine Sekunde später ein' 'update' 'auslöst). Alternativ können Sie auch anrufen 'after' in einer' for'-Schleife, wie Sie es jetzt tun (abnehmende 'number' muss noch in' update' gehen), aber erhöhen Sie bei jedem Anruf die Zeit, um die es um 1 Sekunde warten wird . – ArtOfWarfare