Hi,
Ich habe gerade erst angefangen Python zu lernen und habe einen Lotto Simulator programmiert. Ich möchte gerne, dass wenn ich einen Button drücke, dass er neue Lottozahlen auslost.
Geht das irgendwie?
Schon mal danke für die Antworten.
LG
Mit Button Aktion wiederholen lassen
-
- User
- Beiträge: 8
- Registriert: Samstag 14. März 2020, 20:53
Code: Alles auswählen
import random
from tkinter import *
def button_action():
?????
fenster = Tk()
fenster.title("Lotto")
lottozahlen_alle = []
lottozahlen_alle.extend(range(1,50))
lottozahlen_richtig = random.sample(lottozahlen_alle, 6)
lottozahlen_richtig.sort()
button1 = Button(fenster, text = "neue Zahlen", command=button_action)
label1 = Label(fenster, text = lottozahlen_richtig)
label1.pack()
button1.pack()
Du musst zwei Sachen machen:
- die gesamte Berechnung der 6 aus 49 gehört IN die button action.
- die button action muss das Label kennen, damit sie dessen Text mit der configure-Methode neu setzen kann. Das kann man zb mit einem lambda oder der Verwendung von functools.partial erreichen.
- die gesamte Berechnung der 6 aus 49 gehört IN die button action.
- die button action muss das Label kennen, damit sie dessen Text mit der configure-Methode neu setzen kann. Das kann man zb mit einem lambda oder der Verwendung von functools.partial erreichen.
Code: Alles auswählen
def action(label):
...
label = ...
button.configure(command=lambda: action(label))
-
- User
- Beiträge: 8
- Registriert: Samstag 14. März 2020, 20:53
Kann sein, dass ich blöd bin, aber ich checks nicht ganz
Code: Alles auswählen
import random
from tkinter import *
fenster = Tk()
fenster.title("Lotto")
lottozahlen_alle = []
lottozahlen_alle.extend(range(1,50))
lottozahlen_richtig = random.sample(lottozahlen_alle, 6)
lottozahlen_richtig.sort()
label1 = Label(fenster, text = lottozahlen_richtig)
def button_action(label1):
lottozahlen_richtig = random.sample(lottozahlen_alle, 6)
lottozahlen_richtig.sort()
button1 = Button(fenster, text = "neue Zahlen", command=button_action(label1))
button1.configure(command=lambda: button_action(label1))
label1.pack()
button1.pack()
-
- User
- Beiträge: 8
- Registriert: Samstag 14. März 2020, 20:53
In der Button Action?
Und was muss ins configure rein?
Und was muss ins configure rein?
Das, was _in_ der Funktion steht, wird ausgeführt, wenn der Button gedrückt wird.
Also musst du darin auch den Code schreiben, der den Text auf dem Label ändert, sonst nützt das erzeugen der neuen Zahlen ja nichts, weil sie nirgends angezeigt werden.
Deshalb hat __deets__ dir gezeigt, wie du die Instanz des Labels an die Funktion übergibst.
Nun musst du in der Funktion den Text des Labels ändern.
Also musst du darin auch den Code schreiben, der den Text auf dem Label ändert, sonst nützt das erzeugen der neuen Zahlen ja nichts, weil sie nirgends angezeigt werden.
Deshalb hat __deets__ dir gezeigt, wie du die Instanz des Labels an die Funktion übergibst.
Nun musst du in der Funktion den Text des Labels ändern.
Natuerlich in der Button-action, das ist doch der Moment, in dem du neue Ergebnisse hast. Und der configure-Aufruf ist gut beschrieben in der Dokumentaton. Damit kannst du Eigenschaften einens Widgets nachtraeglich aendern, unter anderem *trommelwirbel* den Text.
-
- User
- Beiträge: 8
- Registriert: Samstag 14. März 2020, 20:53
Also label1.configure(fenster, text = lottozahlen_richtig)
-
- User
- Beiträge: 8
- Registriert: Samstag 14. März 2020, 20:53
Danke Danke klappt endlich