2017-12-03 7 views
-1

Ich versuche eine Reihe von Zahlen auf dem Bildschirm in regelmäßigen Abständen zu zeigen.Wie mache ich time.sleep() mit tkinter arbeiten?

Ich bin neu in Python so kann es etwas offensichtlich sein, aber ich habe versucht .after und pygame.time.wait, aber keiner der beiden funktioniert.

Dies ist der Code:

from tkinter import* 
from random import * 
import time 



my_list = [] 




def Create_NUM(event): 
    x = 0 

    for x in range(level + 2): 
     button1.destroy() 
     num = randint(1, 100) 
     my_list.append(num) 
     Label(root, text=num,fg="red").pack() 
     one.pack() 
     time.sleep(2) 





root=Tk() 

num = 0 
level = 1 
bottomFrame = Frame(root) 
bottomFrame.pack(side=BOTTOM) 

button1 = Button(bottomFrame, text="Click to start game",fg="red") 
button1.bind("<Button-1>", Create_NUM) 
button1.pack() 



root.mainloop() 
+2

nicht verwenden 'sleep()' - 'verwenden root.after (Millisekunden, function_name, Argumente)' statt 'sleep()' und 'for' Schleife – furas

+0

Beachten Sie, dass gerade jetzt' bind 'macht Ihre Schaltfläche nur funktionieren, wenn Sie mit der Maus klicken. Sie sollten versuchen, die Option 'command' zu verwenden, um eine Standardmethode für die Verwendung von Schaltflächen zu verwenden. – Nae

+0

siehe Beispiel, welches [aktuelle Uhrzeit] anzeigt (https://github.com/furas/python-examples/blob/master/tkinter/timer-using-after/clock-function.py) – furas

Antwort

0

Ich nehme an, Sie neue Nummer an Stelle der alten Nummer angezeigt werden soll, nicht darunter.

import tkinter as tk 
import random 

def start(): 
    # hide button 
    button.pack_forget() 
    # run `add_number` first time 
    add_number(level+2) 

def add_number(x): 

    num = random.randint(1, 100) 
    my_list.append(num) 
    label['text'] = num 

    if x > 0: 
     # repeat after 2000ms (2s) 
     root.after(2000, add_number, x-1) 
    else: 
     # show button again after the end 
     button.pack()  

# --- main --- 

my_list = [] 
level = 1 

root = tk.Tk() 

label = tk.Label(root) 
label.pack() 

button = tk.Button(root, text="Click to start game", command=start) 
button.pack() 

root.mainloop() 
Verwandte Themen