Blinkende Felder
Verfasst: Donnerstag 10. Dezember 2020, 12:12
Hallo Zusammen, bin Neu hier im Forum.
Mein Problem: Möchte dass die Farbfelder jeweils zufällig aufblinken und dies jeweils x (später einstellbar) mal. Leider blinken die Felder nach dem Drücken des Starbutton gleichzeitig auf. Ideal wäre ein Feld nach dem anderen. Ist hier threading angebracht bzw. falsch eingesetzt?
Danke im Voraus für eure Infos.
CODE:
from tkinter import *
import random
import time
import threading
root = Tk()
root.title("COLOR GAME")
def leucht_rot():
time.sleep(0.5)
b1.config(bg='red')
time.sleep(1)
b1.config(bg = '#8b0000')
def leucht_blau():
time.sleep(0.5)
b3.config(bg='blue')
time.sleep(1)
b3.config(bg = '#8470ff')
def leucht_gelb():
time.sleep(0.5)
b2.config(bg='yellow')
time.sleep(1)
b2.config(bg = '#ffd700')
def leucht_gruen():
time.sleep(0.5)
b4.config(bg='#00ff00')
time.sleep(1)
b4.config(bg = '#228b22')
# Zufällige helle Farben
def startb():
blist=(b1, b2, b3, b4)
def bzufall(blist):
return random.choice(blist)
for i in range(3):
if bzufall(blist) == b1:
threading.Thread(target=leucht_rot).start()
print("Button 1")
if bzufall(blist) == b2:
threading.Thread(target=leucht_gelb).start()
print("Button 2")
if bzufall(blist) == b3:
threading.Thread(target=leucht_blau).start()
print("Button 3")
if bzufall(blist) == b4:
threading.Thread(target=leucht_gruen).start()
print("Button 4")
# Funtion für Clicken der Buttons
def b_click(b):
pass
# Buttons erzeugen
b1 = Button(root, width=25, height=13, bg='#8b0000', command=lambda: b_click(b1))
b2 = Button(root, width=25, height=13, bg='#ffd700', command=lambda: b_click(b2))
b3 = Button(root, width=25, height=13, bg='#8470ff', command=lambda: b_click(b3))
b4 = Button(root, width=25, height=13 , bg='#228b22', command=lambda: b_click(b4))
start_button = Button(root, text='START', bg='black', fg='white', width=12, height=13, command = lambda: startb())
# Buttons gliedern
b1.grid(row=0, column=0)
b2.grid(row=1, column=0)
b3.grid(row=0, column=1)
b4.grid(row=1, column=1)
start_button.grid(row=0, column=2)
root.mainloop()
Mein Problem: Möchte dass die Farbfelder jeweils zufällig aufblinken und dies jeweils x (später einstellbar) mal. Leider blinken die Felder nach dem Drücken des Starbutton gleichzeitig auf. Ideal wäre ein Feld nach dem anderen. Ist hier threading angebracht bzw. falsch eingesetzt?
Danke im Voraus für eure Infos.
CODE:
from tkinter import *
import random
import time
import threading
root = Tk()
root.title("COLOR GAME")
def leucht_rot():
time.sleep(0.5)
b1.config(bg='red')
time.sleep(1)
b1.config(bg = '#8b0000')
def leucht_blau():
time.sleep(0.5)
b3.config(bg='blue')
time.sleep(1)
b3.config(bg = '#8470ff')
def leucht_gelb():
time.sleep(0.5)
b2.config(bg='yellow')
time.sleep(1)
b2.config(bg = '#ffd700')
def leucht_gruen():
time.sleep(0.5)
b4.config(bg='#00ff00')
time.sleep(1)
b4.config(bg = '#228b22')
# Zufällige helle Farben
def startb():
blist=(b1, b2, b3, b4)
def bzufall(blist):
return random.choice(blist)
for i in range(3):
if bzufall(blist) == b1:
threading.Thread(target=leucht_rot).start()
print("Button 1")
if bzufall(blist) == b2:
threading.Thread(target=leucht_gelb).start()
print("Button 2")
if bzufall(blist) == b3:
threading.Thread(target=leucht_blau).start()
print("Button 3")
if bzufall(blist) == b4:
threading.Thread(target=leucht_gruen).start()
print("Button 4")
# Funtion für Clicken der Buttons
def b_click(b):
pass
# Buttons erzeugen
b1 = Button(root, width=25, height=13, bg='#8b0000', command=lambda: b_click(b1))
b2 = Button(root, width=25, height=13, bg='#ffd700', command=lambda: b_click(b2))
b3 = Button(root, width=25, height=13, bg='#8470ff', command=lambda: b_click(b3))
b4 = Button(root, width=25, height=13 , bg='#228b22', command=lambda: b_click(b4))
start_button = Button(root, text='START', bg='black', fg='white', width=12, height=13, command = lambda: startb())
# Buttons gliedern
b1.grid(row=0, column=0)
b2.grid(row=1, column=0)
b3.grid(row=0, column=1)
b4.grid(row=1, column=1)
start_button.grid(row=0, column=2)
root.mainloop()