Wpis z mikrobloga

Dobry wieczór mirki,
otóż chcę stworzyć 100 guzików z losowymi (niepowtarzającymi się) liczbami od 0 do 100, to już udało mi się zrobić, jednak chcę żeby aplikacja działała na takiej zasadzie że musimy po kolei wciskać guziki od 0 do 99, jednak gdy chcę wywołać funkcję dla danego guzika to odwołuje się ona zawsze do tego ostatniego.
Jak mogę rozwiązać ten problem? Z góry dziękuję za pomoc. #python #programowanie #informatyka
a.....o - Dobry wieczór mirki, 
otóż chcę stworzyć 100 guzików z losowymi (niepowtar...

źródło: comment_1611611673LXw19AbVZFm6q7yMXsKw93.jpg

Pobierz
  • 2
  • Odpowiedz
  • 2
@aJyo bo jak generowałes pętlę to btn był tym ostatnim i nadpisał poprzednie, więc odwołujesz się do ostatniego

Zamiast tego appenduj je do listy i for loopie z ifem sprawdzaj albo zrób słownik zamiast listy
  • Odpowiedz
@aJyo: protip, przejrzyściej będzie najpierw sobie stworzyć buttony:

buttons = [Button(root, text=str(i), height=3, width=6, command=None) for i in range(100)]
potem je pomieszać

random.shuffle(buttons)
a potem tylko je po kolei przypisać

for i in range(10):
... for j in range(10):
...... buttons[i*10 + j].grid(row=i, column=j)
  • Odpowiedz